Prolog学习笔记(三)

一、Prolog中的lists

  1. Prolog支持list这种数据结构。list是一个被方括号包裹的任意多个项(items)组成的序列。

  2. Prolog不支持while或for循环,我们需要用一些新的方法去处理list。我们可以把list写成[Head | Tail],其中Head匹配第一个项(tiem),Tail将会匹配剩下的项。在"|"之前可以是一个或多个元素(objects),之后是一个list。比如说下面三种表示方法表示的是同一个list:

    1. [a | [b, c]]

    2. [a, b | [c]]

    3. [a, b, c | []]

二、List的一些操作

1. Membership

这个比较简单,不多说。

2. Concatenation

对于这个递归的理解有些难度,下面是中国人工智能网里的材料(http://www.chinaai.org/programming/language/prolog-12.html):

首先考虑下面这个询问

我们考察一下它的递归情况

此时已满足递归终止条件,因此_14绑定为[d, e, f],接着执行返回过程

下面举些实用的例子:

1). 去掉一个list L中的最后三个元素

2). 分别去掉一个list L头尾的三个元素

3). 用item匹配一个list最后一个元素

3.Add & Delete & Insertion & Sublist

思考:在del_all中,如果没有标记上的那一句会怎样?

  1. 内建(built-in)的list操作

member(Element, List)相当于my_menber

append(L1, L2, Ans)相当于my_conc

delete(List, Element, Ans)相当于del_all去掉被我标记的那一句。




Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注