Scheme中列表的定义

时间:2011-02-16 01:12:33

标签: scheme

最后学习一个Lisp方言(Scheme),我遇到了两个列表定义 -

  

“空列表或其cdr为列表的对”。

     

“用括号括起来的S-Expressions集合”。

这些定义是否相同?

2 个答案:

答案 0 :(得分:4)

它们与{'a','b','c'}"abc"

等同

前者是机器列表的逻辑表示,后者是您在代码中表示它的方式。

在计划中,你几乎可以将所有内容视为一个列表:)(有人会为此向我投票,但我发现在尝试计划式时它是真的。)

答案 1 :(得分: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))

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