Пролог меняется от списка к соединению - PullRequest
0 голосов
/ 24 июля 2011

предположим, у меня есть список

[p(X,Y) , h(n,U) , f(U,R)]

я хочу изменить соединение и назначить соединение переменной, которая должна быть такой: Вывод:

Variabile = p(X,Y) , h(n,U) , f(U,R)

у вас естьидея?

Ответы [ 2 ]

2 голосов
/ 24 июля 2011

Вы можете назначать термины только переменным. Соединение терминов не является действительным термином.

1 голос
/ 24 июля 2011

Может быть, вы хотите это:

list_to_conj([H], H) :- !.
list_to_conj([H | T], ','(H, Conj)) :-
    list_to_conj(T, Conj).

Примеры использования:

?- list_to_conj([], Variable).
false.

?- list_to_conj([a], Variable).
Variable = a.

?- list_to_conj([a, b], Variable).
Variable = (a, b).

?- list_to_conj([p(X,Y) , h(n,U) , f(U,R)], Variable).
Variable = (p(X, Y), h(n, U), f(U, R)).

?- list_to_conj([writeln(hello), writeln(world)], Variable), call(Variable).
hello
world
Variable = (writeln(hello), writeln(world)).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...