Я начал небольшой путь, пытаясь понять, как работает Пролог, мне нужна помощь, чтобы понять, как решить проблему и что на самом деле делает мой код.Я хочу построить предложение из пролога и просто в качестве базового примера, который не имеет особого смысла, я хочу составить предложение типа 'you are'
и 'you art'
.
Вот мои предикаты:
line(you,[first, type]).
line(thee,[first,old]).
line(thou,[first, new]).
line(are, [second, word]).
line(art, [second, word]).
line(aurt, [second, place]).
Затем я создал правило (которое, как я знаю, неверно, но не знаю почему):
line(A, [composed, type]):-
line(B, [first, type]),
line(C, [second, word]),
append([B,C],A).
Печатая вкомандная строка:
?- line(A, [composed, type]).
false.
Но для меня не интуитивно понятно, что я набираю что-то вроде:
?- line(A, [first,type]).
A = you ;
false.
?- line(A, [second,word]).
A = are ;
A = art ;
false.
Дайте мне слова, которые я хочу.Может кто-нибудь, пожалуйста, помогите мне лучше понять, как я должен составить такое правило, чтобы мой ожидаемый результат был примерно таким:
findall(X, line(X, [composed, type]),Y).
Y= you are;
Y= you art;
false.
Я надеюсь, что это имеет смысл, и я не сделалполностью испортить синтаксис Пролог в этом последнем блоке кода.Заранее спасибо.