cons的定义

这又是一个让我感到很惊讶的thing,让我们理清一下思路:
现在我们是要实现cons,car以及cdr,使得(car (cons x y))=x,(cdr (cons x y))=y,cons由我们自己定义,它的值要么是数,要么是函数,一般情况下,用数将两个量结合还能区分开来是比较困难的,那么cons应该返回一个函数,这个函数要能根据接受的参数返回x或y,这个参数可以是同一个函数的不同参数,也可以是不同的函数,这里是书上的第二种定义,主要体现的思想是过程可以作为参数被传递,也可以作为值被返回,这在其他的语言里实现起来远没有scheme方便,一切解释数据:

(define (my-cons x y)
  (lambda (f) (f x y)))
(define (my-car z)
  (z (lambda (x y) x)))
(define (my-cdr z)
  (z (lambda (x y) y)))
(define test (my-cons 1 2))
(my-car test)
(my-cdr test)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值