我正在学习Lisp,但我不理解他们在解释列表和原子的课程中给出的一些示例。
我明白 :
- (AB):1 个列表,2 个原子
- (ABC):1 个列表,3 个原子
我不明白这部分:
- (A (BC)) : 1 个列表,1 个原子
想了很多之后,我认为:
A 是原子, (BC) 是列表,但我真的不明白为什么....
- 为什么第一个和最后一个括号不被视为一个列表?
- 我们为什么不把 B 和 C 算作原子呢?
提前感谢您对这个奇怪的事情的任何启发:)
我正在学习Lisp,但我不理解他们在解释列表和原子的课程中给出的一些示例。
我明白 :
我不明白这部分:
想了很多之后,我认为:
A 是原子, (BC) 是列表,但我真的不明白为什么....
提前感谢您对这个奇怪的事情的任何启发:)
我会说答案是错误的。为了与之前的答案保持一致,它应该是:
原因如下:总共有三个原子:A B C
. 有一个嵌套列表:(B C)
和一个外部列表:(A (B C))
,总共两个列表。
如果问题是“计算列表中的顶级元素”,那么说有“1 个列表,1 个原子”是正确的——但这与前两个示例不一致,前两个示例考虑了所有原子和显示的列表,包括外部列表。
(A (B C))
: 1 个列表,1 个原子,1 个列表,2 个原子
正如其他人所指出的,这个问题有点令人困惑。但是即使问题令人困惑,您也可以理解这些概念。
让我们采取第一个:
(A B)
这是什么?嗯,它是一个列表,所以它包含更小的东西。耶!里面有多少元素?不完全是。在这里停下来回答问题。
...
二!
(A B)
^ ^
___/ \___
/ \
| |
element element
one two
有哪些元素?两个原子:A
和B
。请注意,正如“原子”这个名字所暗示的那样,它们不能分解成更多的元素。
第二个怎么样?
(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))
让我们称 A = Fred
(BC) = George
和 (A (BC)) = Ginny。
金妮有多少个名单?只有一个。金妮由什么组成?一份清单,乔治,一份原子,弗雷德。
希望有帮助。
PS:不要想太多。
列表数 = 括号对数。原子数=其他所有事物的数量。让我们应用它: