ANSI Common Lisp (スタンダードテキスト)
より
 
 

 
;; 定数
(defconstant const 100)
 
;; 大尉域変数かどうかを調べる
;; 引数はシンボル
(boundp 'const)
 
;; do
;; (do (変数 初期値 更新方法)
;;	   (終了テスト)
;;	   body)
(defun show-squares (start end)
 (do ((i start (+ i 1)))
  ((> i end) 'done)
  (format t "~A ~A~%" i (* i i))))
 
;; do と同じことを再帰で
(defun show-squares-r (i end)
 (if (> i end)
  'done
  (progn
   (format t "~A ~A~%" i (* i i))
   (show-squares-r (+ i 1) end))))
 
;; dolist
;; (dolist (変数 リスト)
;;	body)
(defun our-length (lst)
 (let ((len 0))
  (dolist (obj lst)
   (setf len (+ len 1)))
  len))
 
;; dolist と同じことを再帰で
;; 末尾再帰じゃないから最適化はされない
(defun our-length-r (lst)
 (if (null lst)
  0
  (+ (our-length-r (cdr lst)) 1)))
 

 

 
 
 
 

§1530 · Posted By · 3月 19, 2014 · Development · Tags: , , , , · [Print]