Prolog编程中的列表、结构处理与排序算法
1. 列表作为结构
在Prolog中,列表也是一种结构。具体来说,列表是一种仅在右侧分支的树结构。例如,列表 [a,b,c] 在函子 - 参数表示法中可写为 .(a,.(b,.(c,[]))) ,但通常我们使用方括号的形式。以下是一些等价表示:
- .(a,[]) 等价于 [a]
- .(a,.(b,.(c,[]))) 等价于 [a,b,c]
- .(a,b) 等价于 [a|b] (这是一个不恰当列表)
- .(a,.(b,.(c,d))) 等价于 [a,b,c|d] (另一个不恰当列表)
每个非空列表都以点( . )作为主函子,但空列表 [] 不是结构,也不包含点函子。列表的分支特点是每个点函子有两个参数,第一个参数是一个元素,第二个参数是另一个列表,即每个列表由一个元素加上另一个列表或 [] 组成。如果列表不以 [] 结尾,则称为不恰当列表。
列表相对于多参数结构的一大优势是,无需知道列表元素的数量就能对其进行处理。任何非空列表都能与 .(X,Y) (更常见的写法是 [X|Y] )进行合一,然后可以处理元素
超级会员免费看
订阅专栏 解锁全文
1059

被折叠的 条评论
为什么被折叠?



