Как получить обобщение термина. Пролог

Например - у меня есть несколько терминов:

moves(1, [1]).
moves(1, [2]).
moves(1, [3]).

Как я могу получить следующий срок?

moves(1, [1,2,3]).

% I have
    moves(1, [1]).
    moves(1, [2]).
    moves(1, [3]).

% I need to write some predicate which
    transform_moves :- 
        % ...
        % ...
        assert(moves(Pos, Arr)),

        % moves(1, [1,2,3]).

person nub    schedule 18.09.2011    source источник
comment
Что вы имеете в виду под получить? Вы хотите построить последний член из трех предыдущих?   -  person ThomasH    schedule 18.09.2011
comment
Посмотрите на вопрос сейчас. Я обновляю его.   -  person nub    schedule 18.09.2011


Ответы (1)


Программа:

:- dynamic moves/2.

moves(1, [1]).
moves(1, [2]).
moves(1, [3]).

transform_moves(Pos) :- 
    findall(Y, moves(Pos, [Y]), L), 
    retractall(moves(Pos, _)),
    assert(moves(Pos, L)).

Вызов:

?- transform_moves(1).
person Jiri Kriz    schedule 18.09.2011