Я написал свой первый простой код на PROLOG:
is_beginning([], _).
is_beginning([FirstLetterB|RestWordB], [FirstLetterW|RestWordW]) :-
FirstLetterB == FirstLetterW,
is_beginning(RestWordB, RestWordW).
Он предназначен для того, чтобы выяснить, равен ли первый аргумент is_beginning второму началу. Ну, ИМХО, он может довольно хорошо отвечать на вопросы, но теперь мне интересно, есть ли возможность получить все возможные ответы для определенного второго аргумента. например. за
is_beginning(Answers, [a,b,c]);
я хочу получить [], [a], [a,b], [a,b,c] в качестве унификации ответов, но я получаю только [] (самый простой ответ).
Есть ли возможность получить то, что я хочу? Может, в моем определении что-то не так? Я уже пытался использовать findall и forall, но у меня это не работает :(
Спасибо за все ответы.
is_beginning([X|A],[X|B]):-is_beginning(A,B).
- person Nick Barnes   schedule 10.12.2012