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 (著)、川合 史朗 (翻訳)、オライリージャパン)の3章(Lisp の構文の世界を探検する)、3.3(Lisp はコードとデータをどう区別するか)をSchemeで取り組んでみる。
3.3(Lisp はコードとデータをどう区別するか)
コード(Emacs)
(begin
(newline)
(define print (lambda (x) (display x) (newline)))
(define square (lambda (n) (* n n)))
(define expt
(lambda (x n)
(if (= n 1)
x
(* x (expt x (- n 1))))))
;; コードモード
(print (expt 2 3))
(print (expt 2 (+ 3 4)))
;; データモード
(print (quote (expt 2 3)))
(print '(expt 2 3))
;; quote (シングルクォート)は手続きではなく構文(syntax)
(print quote)
'done)
入出力結果(Terminal(kscheme), REPL(Read, Eval, Print, Loop))
$ kscheme < sample3_3.scm kscm> 8 128 (expt 2 3) (expt 2 3) #<syntax quote> done kscm> $
0 コメント:
コメントを投稿