您好,
我是Prolog编程的新手。
我的问题是:
假设我有这个元素列表[a,e,u,o,y,i]
我想给它一个标识符,例如vowels
。
为什么?
假设我们有一个定义的谓词member/2
,如果列表中存在一个元素,则会递归检查,因此我们的查询会是这样的:
?- member(x,vowels).
false
?- member(a,vowels).
true
答案 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.