計算機プログラムの構造と解釈 第二版 P85 問題2.55
なかなか面白い。
「''」が内部的にどういう解釈になっているのかわかればいいのかな?
って感じでやってみた。
まず、
(car ''abracadabra)
と入力した、驚いたことに解釈系はquoteと印字してきた.なぜか.
ってあるんだけど、実際にやってみるとそのようになった。
こうやられちゃうと気になるのが、cdrした場合はどうなるわけ?
っていうのを考えちゃう訳だ。
(cdr ''abracadabra)
やってみると
(abracadabra)
が返ってくる。
まーこんな事をやりながら、多分こんな感じのことを内側でやっているのだろう
ということを見つけたので書いておく。
実装
#!/usr/local/bin/gosh ;; -*- coding: utf-8 -*- (use ggc.debug.trace) (use math.mt-random) ;; main (define (main args) (display "(car ''abracadabra): ") (display (car ''abracadabra)) (newline) (display "(cdr ''abracadabra): ") (display (cdr ''abracadabra)) (newline) (display "(cddr ''abracadabra): ") (display (cddr ''abracadabra)) (newline) (display "'abracadabra: ") (display 'abracadabra) (newline) (display "''abracadabra: ") (display ''abracadabra) (newline) (display "(car (cond '' 'abracadabra)): ") (display (car (cond '' 'abracadabra))) (newline) (display "(cdr (cond '' 'abracadabra)): ") (display (cdr (cond '' 'abracadabra))) (newline) 0)
実行
(car ''abracadabra): quote (cdr ''abracadabra): (abracadabra) (cddr ''abracadabra): () 'abracadabra: abracadabra ''abracadabra: 'abracadabra (car (cond '' 'abracadabra)): quote (cdr (cond '' 'abracadabra)): (abracadabra)
んー、おしえて偉いヒト、、ってかんじだなぁ。
どういうことなんだろ。。。