common lisp

common lispにおけるスコープの考察

(setf x 'outside) ;=>outside ;letはparallelに値を束縛する. (let ((x 'inside) (y x)) ;x => outside (list x y)) ;=>(inside outside) ;let*は逐次値を束縛する. (let* ((x 'inside) (y x)) ;x => inside (list x y)) ;=>(inside inside) (list y) ;=>…

lispの再帰関数,関数作成の練習

;リスト→最後の要素を取除いたリストを返す. (defun butlast$ (lst) (reverse (cdr (reverse lst))) ) ;階乗計算 ;1つめの方法 (defun factorial (x) (if (<= x 1) x (* x (factorial (- x 1))) )) ;2つめの方法 (defun factorial2 (n) (fac-loop 1 n 1)) …

lispの練習

Lispはデータもリスト処理も区別せず,全く同じルールで計算する.QUOTEのやくわり 'apple はフォームだが,これをひょうかするとappleというデータとなる.関数の引数はデータ型であると分かって初めてその関数を適用できる. (+ a x) (list '(1 2)) ;与え…

文法いろいろ

(do '(i 0 (1+ i)) ((> i 10) 'done) (print i) ) もしくは (do ((i 0 (1+ i))) //2重かっこにする for文ぽい。for(int i = 0; i < SIZE; i++) ((> i 10) 'done)for (print i) ) (format t ==) t is shorthand for the stream *standard-output*.

評価

lispは大文字、小文字を区別しない。 S式の[S]は「Symbol」のイニシャル (car '(goo choky pah))は (car (quote (goo choky pah)))とおなじ。 '(1 2) ;(1 2) (quote (1 2)) ;(1 2)で同じこと。つまり、それ自体をシンボルとして扱う。 (car (a (b c d))) ;だ…