如何在Prolog中列出一个id?

时间:2015-10-17 17:51:27

标签: prolog

您好,

我是Prolog编程的新手。

我的问题是:

假设我有这个元素列表[a,e,u,o,y,i] 我想给它一个标识符,例如vowels

为什么?

假设我们有一个定义的谓词member/2,如果列表中存在一个元素,则会递归检查,因此我们的查询会是这样的:

    ?- member(x,vowels).
    false
    ?- member(a,vowels).
    true

2 个答案:

答案 0 :(得分:1)

您只需定义谓词vowels/1

即可
vowels([a,e,u,o,y,i]).

然后写:

?- vowels(Vowels), member(x, Vowels).
false.
?- vowels(Vowels), member(a, Vowels).
Vowels = [a, e, u, o, y, i] .

如果您没有真正打印查询的绑定,请在评论中提示,只需定义vowel/1谓词:

vowel(Letter) :-
    vowels(Vowels), member(Letter, Vowels).

答案 1 :(得分:1)

当你说" 我想给它一个标识符" ...

时,我的意思并不是很清楚

为什么不定义谓词vowel/1并使用vowel(X)代替member(X,[a,e,u,o,y,i])

vowel(a).
vowel(e).
vowel(u).
vowel(o).
vowel(y).
vowel(i).

样本使用:

?- vowel(x).
false.

?- vowel(a).
true.