Land of Lisp
(オライリージャパン)
M.D. Conrad Barski (著) 川合 史朗 (翻訳)
原書: Land of LISP
Learn to Program in Lisp, One Game at a Time!
開発環境
- OS X Yosemite - Apple (OS)
- Emacs(Text Editor)
- Scheme (プログラミング言語)
- kscheme, Gauche, GNU Guile (処理系)
Land of Lisp (M.D. Conrad Barski (著)、川合 史朗 (翻訳)、オライリージャパン)の2章(はじめてのLispプログラム)、2.6(ローカル関数を定義する)をSchemeで取り組んでみる。
2.6(ローカル関数を定義する)
コード(Emacs)
(define print
(lambda (x)
(begin (display x)
(newline))))
(define for-each
(lambda (proc items)
(if (not (null? items))
(begin (proc (car items))
(for-each proc (cdr items))))))
(define f
(lambda (n)
(+ n 1)))
(define g
(lambda (n)
(- n 3)))
(define a
(lambda (n) (+ n 50)))
(define b
(lambda (n)
(+ (a n) 60)))
(begin (newline)
(for-each print
(list (f 5)
(let ((f (lambda (n)
(+ n 10))))
(f 5))
(f 5)
(quote done)
(g (f 5))
(let ((f (lambda (n)
(+ n 10)))
(g (lambda (n)
(- n 3))))
(g (f 5)))
(g (f 5))
(quote done)
(b 10)
(let ((a (lambda (n)
(+ n 5))))
(let ((b (lambda (n)
(+ (a n) 6))))
(b 10)))
(b 10)
((lambda ()
(define a (lambda (n) (+ n 5)))
(define b (lambda (n) (+ (a n) 6)))
(b 10)))
(b 10)
(quote done))))
入出力結果(Terminal(kscheme), REPL(Read, Eval, Print, Loop))
$ kscheme < sample2_6.scm kscm> kscm> kscm> kscm> kscm> kscm> kscm> 6 15 6 done 3 12 3 done 120 21 120 21 120 done #<undefined> kscm> $
0 コメント:
コメントを投稿