看到sicp的第2章,突然又想做做题了,一般我是有兴趣才做一下,
Exercise 2.4. Here is an alternative procedural representation of pairs. For this representation, verify that (car (cons x y)) yields x for any objects x and y.
(define (cons x y)
(lambda (m) (m x y)))
(define (car z)
(z (lambda (p q) p)))
What is the corresponding definition of cdr?
挺容易得到正确答案的,
(define (cdr z)
(z (lambda (p q) q))) 把p换成q就可以了,可以想通可费了点时间,呵呵
需要置换进去才知道是怎么回事,呵呵
以car为例
定义个 pair
(define x (cons 12 34))
当调用(car x) 的时候
置换进去,实际上就是
( (lambda (m) (m 12 34)) (lambda (p q) p))
继续,根据语法
(lambda (p q) p)就是前面 (lambda (m) (m 12 34))的参数了,
是参数就代入看看
函数体(m 12 34) 变为 ((lambda (p q) p) 12 34)
哈哈,12 34又变成(lambda (p q) p)的参数了,
结果 12就出来,绕口吧,^_^,无聊的时候做做题目挺开心的。
要是实际项目写这样的代码,有人读吗,
分享到:
相关推荐
JSchemeMin 是一个JVM平台上的Scheme语言实现。作为R7RS的实现,JSchemeMin支持Scheme的所有标准特性,包括头等公民地位的过程、尾递归优化、继续、用户定义记录、库(包括R7RS附录A中全部语法和过程,不只base)、...
Scheme是MIT在LISP语言的基础上发展而来的一个变种,也可以称之为方言。 多用途,脚本语言,应用软件扩展等等,这些特点都不是scheme独有的,很多的动态语言如perl, python,javascript等都能满足。至于元语言特性,...
该中文教程详细介绍了scheme语言的语法,规则,是初学者的入门好教材
Scheme語言非常好的入門資料,幾十頁即可令你快速地瞭解Scheme這個很適合教學的Lisp方言
scheme语言的解释器scheme48
scheme语言相关的学习资料: guide_racket_scheme.pdf Lisp之根源.pdf Racket图文教程.pdf scheme-primer.pdf schem-r5rs_cn.pdf The_Little_Schemer.pdf 通过Scheme看函数式编程.pdf Write_Yourself_a_Scheme_in_48...
scheme语言structure数据类型的使用例子,使用方法参阅我的博文http://blog.csdn.net/tumiz/article/details/27852349
The scheme programming language 4th 关于Scheme语言的书,值得一看
scheme算法语言
FLUNET外编程语言SCHEME讲解。讲述了SCHEME的编程规则,以及FLUENT使用SCHEME的方法
Dr.Racket, r5s5 语言写的一个简单递归, 可以计算阶乘。
Scheme语言概要[定义].pdf
介绍Scheme编程语言,涵盖正式和非正式标准中的所有内容。
lisp语言教程(scheme),基础,入门,本人制作的pdf
块(form)是Scheme语言中的最小程序单元,一个Scheme语言程序是由一个或多个form构成。没有特殊说明的情况下 form 都由小括号括起来 SCHEME语言的数据类型 PROLOG语言 Prolog程序的简单例子 Visual Prolog是基于...
scheme语言的开发环境,学习scheme语言的帮手
Animach是一种语言实现,能够将Scheme编译为中间语言代码,并在虚拟机上执行中间语言代码。Animach基于Node.js开发,您可以使用JavaScript或TypeScript编写“本地函数库”,以扩展Animach的功能。 使用方法 依赖项...
Scheme 程序语言介绍之一
这是适合有一定基础的初学者的SCHEME教程!
JSchemeMin 是一个JVM平台上的Scheme语言实现。 作为R7RS的实现,JSchemeMin支持Scheme的所有标准特性,包括头等公民地位的过程、尾递归优化、继续、用户定义记录、库(包括R7RS附录A中全部语法和过程,不只base)、...