開発環境
- OS X Lion - Apple(OS)
- Emacs、BBEdit - Bare Bones Software, Inc. (Text Editor)
- プログラミング言語: MIT/GNU Scheme
計算機プログラムの構造と解釈(Gerald Jay Sussman(原著)、Julie Sussman(原著)、Harold Abelson(原著)、和田 英一(翻訳)、ピアソンエデュケーション)の2(データによる抽象の構築)、2.3(記号データ)、2.3.1(クォート)の問題 2.53、問題 2.54、問題 2.55を解いてみる。
その他参考書籍
問題 2.53
(a b c) ((george)) ((y1 y2)) (y1 y20 #f #f (red shoes blue socks)
入出力結果(Terminal, REPL(Read, Eval, Print, Loop))
1 ]=> (list 'a 'b 'c) ;Value 2: (a b c) 1 ]=> (list (list 'george)) ;Value 3: ((george)) 1 ]=> (cdr '((x1 x2) (y1 y2))) ;Value 4: ((y1 y2)) 1 ]=> (cadr '((x1 x2) (y1 y2))) ;Value 5: (y1 y2) 1 ]=> (pair? (car '(a short list))) ;Value: #f 1 ]=> (memq 'red '((red shoes) (blue sockes))) ;Value: #f 1 ]=> (memq 'red '(red shoes blu socks)) ;Value 6: (red shoes blu socks)
問題 2.54
コード
sample.scm
(define (equal? a b) (if (and (pair? a) (pair? b)) (and (eq? (car a) (car b)) (equal? (cdr a) (cdr b))) (eq? a b)))
入出力結果(Terminal, REPL(Read, Eval, Print, Loop))
1 ]=> (equal? '(this is a list) '(this is a list)) ;Value: #t 1 ]=> (equal? '(this is a list) '(this (is a) list)) ;Value: #f
問題 2.55
解釈系がやっていること。(特殊形式quoteを使って補正)
(car ''abdacadabra) (car (quote (quote abdacadabra))) quote
ということで、解釈系はquoteと印字する。
0 コメント:
コメントを投稿