Как создать список, составленный из имен предиката в прологе - PullRequest
0 голосов
/ 14 апреля 2020

Как создать список, составленный из имен примера предиката: имя (а), имя (б), имя (c), имя (д)

I хотите получить список вроде L = [a, b, c, d].

Пожалуйста, помогите мне с кодом или советом.

1 Ответ

3 голосов
/ 14 апреля 2020

findall/3 создает список для вас, если имя предиката и арность известны, просто используйте его для получения списка L

?- findall(X,name(X),L).

Если имя предиката неизвестно, вы можете использовать call/N, где N - это артикль предиката плюс один. Например:

?- [user].
|: a_name(a).
|: a_name(b).
|: a_name(c).
|: ^D% user://1 compiled 0.01 sec, 3 clauses
true.

?- Name =a_name,findall(X,call(Name,X),L).
Name = a_name,
L = [a, b, c].
...