首页 > 解决方案 > 有人可以解释一下 Prolog 列表中嵌套对的含义吗?

问题描述

我知道 Prolog 列表不是扁平的,但它们是嵌套的对.. 有人可以向我解释它的实际含义吗?

标签: prolog

解决方案


我不能对所有 Prolog 实现都这么说,但一般来说,每个列表都由Headand组成Tail(其中Head是列表的元素,Tail也是一个列表),或者它是空的,既没有Head也没有Tail

所以一个列表L = [a, b, c, d]看起来像这样:

head(L) = a
tail(L) = [b, c, d]

或者,

[H | T] = [a | [b, c, d]]

那么[b, c, d] = [b | [c, d]],[c, d] = [c | [d]][d] = [d | []]where[]是一个空列表

空列表 ,[]是一个例外,不能进一步划分。

或以的形式:

*  - node
[] - empty list

  *
 / \
a   *
   / \
  b   *
     / \
    c   *
       / \
      d  []

推荐阅读