书中讲到数组的实现实在很有意思,如果没有亲眼看到,决不相信无论再复杂的数组都是用最简单的过程表示的。
例如我们再python中的list 会这么写:
a=[1,2,3,4]
而在lisp中需要这么写:
(define a `(1 2 3 4))
//或者
(define a (cons (1 (cons 2 (cons 3 (cons 4)))) ))
//如果想调取1这个数
(car a)
//调取2
(car (cdr a))
//调取3
(car (cdr (cdr a)))
//调取4
(car (cdr (cdr (cdr a))))
整个定义过程就是把数组中的数一个个装入一个可以无限延伸的二叉树的节点中,其中的每一个节点都拥有无限延伸的可能。
何为一,一个express 就是一,它可以是a=2这样最简单的express,也可以是a=lambda(x)(lambda (y) (lambda (z) (if ...))
一生二 ,(cons 1 2)就是二。以一次赋两个值开始,单一的定义规则被完全打破,一斧头便劈开了天地。
二生三,这只是一个从上面2这个位置自然产生的又一次二叉树,这一次分叉,代表着生命的开始,无尽裂变的第一次尝试。
三生万物矣。
万事相通,不要去黑中医,泱泱中华数千年自有道理,总有一些道理是普通人无法看破的,SICP视频的开头就是一个太极,一半是eval 一半是accept,他们想说的无非就是一个自然而然的循环,古往今来,万事不离其中。
网友评论