如何在 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.