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)))