1

我正在学习Lisp,但我不理解他们在解释列表原子的课程中给出的一些示例。

我明白 :

  • (AB):1 个列表,2 个原子
  • (ABC):1 个列表,3 个原子

我不明白这部分:

  • (A (BC)) : 1 个列表,1 个原子

想了很多之后,我认为:

  • A 是原子, (BC) 是列表,但我真的不明白为什么....

    • 为什么第一个和最后一个括号不被视为一个列表?
    • 我们为什么不把 B 和 C 算作原子呢?

提前感谢您对这个奇怪的事情的任何启发:)

4

5 回答 5

7

我会说答案是错误的。为了与之前的答案保持一致,它应该是:

  • (A (BC)) : 2 个列表,3 个原子

原因如下:总共有三个原子:A B C. 有一个嵌套列表:(B C)和一个外部列表:(A (B C)),总共两个列表。

如果问题是“计算列表中的顶级元素”,那么说有“1 个列表,1 个原子”是正确的——但这与前两个示例不一致,前两个示例考虑了所有原子和显示的列表,包括外部列表。

于 2013-05-28T21:19:10.820 回答
4

(A (B C)): 1 个列表,1 个原子,1 个列表,2 个原子

于 2013-05-28T21:46:13.860 回答
2

正如其他人所指出的,这个问题有点令人困惑。但是即使问题令人困惑,您也可以理解这些概念。

让我们采取第一个:

(A B)

这是什么?嗯,它是一个列表,所以它包含更小的东西。耶!里面有多少元素?不完全是。在这里停下来回答问题。

...

二!

      (A B)
       ^ ^
    ___/ \___
   /         \
   |         |
element   element
  one       two

有哪些元素?两个原子:AB。请注意,正如“原子”这个名字所暗示的那样,它们不能分解成更多的元素。

第二个怎么样?

(A B C)

它也是一个列表,但这个列表包含三个元素,同样是所有原子:ABC

让我们来看第三个,它更令人困惑:

(A (B C))

如果您一直在跟踪,这也是一个列表。它有多少元素?这个比较棘手。

...

二!两个要素。

    (A (B C))
     ^ \___/
     /    \
    /      \
   /        \
   |        |
element  element
  one      two

第一个元素是A,第二个元素是 (B C)。但是等等,它们的类型是什么?

A是一个原子,但是(B C)是一个列表!所以我们递归,讨论(B C). 这是一个列表,有两个元素:BC。这两个都是原子,所以我们完成了。

所以现在你应该更好地理解列表了,即使你正在学习的任何书上的问题都不是很有意义。但是现在它没有意义,因为它定义不明确,而不是因为你不理解这些概念。

额外的信用!列出此列表中元素的类型,如果它们是列表,请继续!

(A ((B C) D) (E F))
于 2013-05-30T03:39:01.063 回答
0

让我们称 A = Fred
(BC) = George
和 (A (BC)) = Ginny。

金妮有多少个名单?只有一个。金妮由什么组成?一份清单,乔治,一份原子,弗雷德。

希望有帮助。

PS:不要想太多。

于 2013-05-28T21:33:25.367 回答
0

列表数 = 括号对数。原子数=其他所有事物的数量。让我们应用它:

  • (AB):1 个列表,2 个原子
  • (ABC):1 个列表,3 个原子
  • (A (BC)) : 2 个列表,3 个原子
  • (((1))) :3个列表,1个原子
  • (A . B) :1(不正确的)列表,2 个原子
于 2013-05-29T13:18:53.677 回答