LISP
繰り返し処理を定義する (define zero (lambda (s) (lambda (z) z))) (define one (lambda (s) (lambda (z) (s z)))) (define two (lambda (s) (lambda (z) (s(s z))))) (define three (lambda (s) (lambda (z) (s(s(s z)))))) 0にadd1を2回適用する ((two …
Last In First Out (LIFO) (define stack '()) (define set-stack (lambda () (set! stack '()) 'done)) (define push (lambda (x) (cond ((null? stack) (set! stack (list x))) (else (set! stack (cons x stack)))) stack)) (define pop (lambda () (let …
順列・組み合わせ・重複組み合わせの通りの数はなので (define perm (lambda (n r) (cond ((= r 0) 1) ((= r 1) n) (else (* n (perm (- n 1) (- r 1)))) ))) (define comb (lambda (n r) (cond ((= r 0) 1) ((= r n) 1) (else (+ (comb (- n 1) (- r 1)) (c…
こちらでLISPの手習い中 ひとまず関数をひたすら書いてみる (define non (lambda (x) 'non)) (define id (lambda (x) x)) (define add1 (lambda (x) (+ x 1))) (define sub1 (lambda (x) (- x 1))) (define ++ (lambda (i) (+ i 1))) (define -- (lambda (i)…
Emacs LISPもちょっとやってみた。『素数夜曲』と合っていないこともあり、超難航! Racket, Scheme R5RSでやることに変更(前の記事) Lisp Cabinetというのが比較的簡単な環境のようなのでダウンロードすることにする(こちらがダウンロードサイト)。ひたすら…