如何在 Prolog 中给列表一个 id?
How to give a list an id in Prolog?
嗨,
我是 Prolog 编程新手。
我的问题是:
假设我有这个元素列表[a,e,u,o,y,i]
我想给它一个标识符,例如 vowels
。
为什么?
假设我们有一个已定义的谓词 member/2
,它递归地检查一个元素是否存在于列表中,因此我们的查询将是这样的:
?- member(x,vowels).
false
?- member(a,vowels).
true
你可以简单地定义一个谓词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).
我不太清楚你说“我想给它一个标识符”是什么意思...
为什么不定义谓词 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.
嗨,
我是 Prolog 编程新手。
我的问题是:
假设我有这个元素列表[a,e,u,o,y,i]
我想给它一个标识符,例如 vowels
。
为什么?
假设我们有一个已定义的谓词 member/2
,它递归地检查一个元素是否存在于列表中,因此我们的查询将是这样的:
?- member(x,vowels).
false
?- member(a,vowels).
true
你可以简单地定义一个谓词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).
我不太清楚你说“我想给它一个标识符”是什么意思...
为什么不定义谓词 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.