http://d.hatena.ne.jp/propella/20080202/p2 の続き。自分で考えようと思ったけど、SICP 4.2.3 にあった答え(?)をうっかり見てしまった!新しい解はスマートで、しかも型安全。わざと冗長に書くと、
cons x y m = m x y getCar x y = x getCdr x y = y car z = z getCar cdr z = z getCdr
*Main> (car (cons 3 4)) 3 *Main> (car (cdr (cons 3 (cons 4 ())))) 4 *Main> (cons 3 (cons 4 ())) getCdr getCar 4 *Main>
なんで冗長に書いたか分かりますか?(cons 3 (cons 4 ())) getCdr getCar みたいな事がしたかったんです!まさに Scheme + Smalltalk。さて、この後プリンタと map を書こうと思ったんだけど、またもやムズイ。。。ので休憩。