定义

2011-02-16 11 views
1

最后冒险尝试学习一种Lisp方言(计划),我曾经遇到过一个名单的两个定义 -定义

“无论是空列表或一对,其CDR是一个列表”。

“圆括号内的S表达式集合”。

这些定义是否相同?

+1

阅读标准! R5RS,6.3.2对和列表:对主要用于表示列表。列表可以递归地定义为空列表或cdr是列表的对。更确切地说,这组列表被定义为最小的集合X,使得... – knivil 2011-02-16 09:44:53

+0

谢谢,这是帮助我很多 – 2011-02-17 00:00:53

回答

4

他们等同为{'a','b','c'}和​​

前者是一个列表的机器的逻辑表示,后者是你如何代表它在你的代码。

而在方案中,你几乎可以把所有的名单:)(有人来要downvote我,但我发现它试图想计划去年秋季的时候是真的。)

+1

其实,你得到upvote说,你可以把所有东西都视为一个列表。因为Scheme代码实际上是一堆列表! – 2011-02-16 03:32:40

4

我我要带出我最喜爱的狗和小马秀!

Tree of cons cells http://cloud9.hedgee.com/priv/expr1.png

这对应于以下内容:

(let ((s5 (sqrt 5))) 
    (/ (- (expt (/ (1+ s5) 2) n) 
     (expt (/ (- 1 s5) 2) n)) s5)) 

图说明的第一条语句(空列表对象被表示为黑盒)。代码片段说明你的第二个。 :-)