我正在学习 Lisp ,我不理解他们在解释列表和原子的课程中给出的一些例子。
我理解:
我不明白这一部分:
经过深思熟虑之后,我认为:
A是原子,(B C)是列表,但我真的不明白为什么......
提前感谢对这个奇怪的事情的任何启示:)
答案 0 :(得分:6)
我会说答案是对的。为了与之前的答案保持一致,它应该是:
原因如下:总共有三个原子:A B C
。有一个嵌套列表:(B C)
和一个外部列表:(A (B C))
,总共有两个列表。
如果问题是“计算列表中的顶级元素”,那么说“有1个列表,1个原子”是正确的 - 但这与前两个不一致示例,其中考虑了所有原子和列表,包括外部列表。
答案 1 :(得分:4)
(A (B C))
:1个列表,1个原子,1个列表,2个原子
答案 2 :(得分:2)
正如其他人所指出的那样,这个问题有点令人困惑。但即使问题令人困惑,你也可以理解这些概念。
我们来看第一个:
(A B)
这是什么?嗯,这是一个列表,所以它包含较小的东西。好极了!它中有多少元素?不完全是。停在这里回答问题。
...
两个!
(A B)
^ ^
___/ \___
/ \
| |
element element
one two
有哪些要素?两个原子:A
和B
。请注意,正如名称“atom”所暗示的那样,它们不能分解为更多元素。
第二个怎么样?
(A B C)
它也是一个列表,但是这个列表中有三个元素,同样是所有原子:A
,B
和C
。
让我们采取第三个,这更令人困惑:
(A (B C))
如果您一直在跟踪,这也是一个列表。它有多少元素?这个比较棘手。
...
二!两个要素。
(A (B C))
^ \___/
/ \
/ \
/ \
| |
element element
one two
第一个元素是A
,第二个元素是(B C)
。但等等,他们的类型是什么?
A
是一个原子,但(B C)
是一个列表!所以我们递归,并谈论(B C)
。这是一个列表,包含两个元素:B
和C
。这两个都是原子,所以我们已经完成了。
所以现在你应该更好地理解列表,即使你从任何书中学到的问题都没有意义。但现在它没有意义,因为它不明确,不是因为你不理解这些概念。
额外的功劳!列出此列表中元素的类型,如果它们是列表,请继续!
(A ((B C) D) (E F))
答案 3 :(得分:0)
我们叫A = Fred
(B C)=乔治
和(A(B C))=金妮。
金妮有多少名单?只有一个。金妮是什么组成的?一个名单,乔治和一个原子,弗雷德。
希望有所帮助。
PS:不要过度思考。答案 4 :(得分:0)
列表数量=父母数量。原子数=其他一切的数量。让我们应用它: