练习2.4
直接运用对比的技巧就可以猜测出相应的cdr表示如下:
(define (cdr z)
(z (lambda (p q) q)))
但我们还是要按照题中要求用代换模型来检验。先来检验car的。
(car (cons 0 1))
(car (lambda (m) (0 1)))
((lambda (z) (z (lambda (p q) p)))
(lambda (m) (0 1)))
((lambda (m) (0 1)) (lambda (p q) p))
((lambda (p q) p) 0 1)
0
接下来是cdr的。
(cdr (cons 0 1))
(cdr (lambda (m) (0 1)))
((lambda (z) (z (lambda (p q) q)))
(lambda (m) (0 1)))
((lambda (m) (0 1)) (lambda (p q) q))
((lambda (p q) q) 0 1)
1
大家可以在Edwin中测试一下。
版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.youkuaiyun.com/nomasp
本文通过代换模型详细解析了Scheme语言中car和cdr函数的工作原理,使用具体的例子展示了如何通过lambda表达式实现数据结构的操作。
2573

被折叠的 条评论
为什么被折叠?



