Означает ли создание предиката, что я создаю новый файл, который затем проверяю для запуска?
Это фактически означает «добавить предикат в базу данных Prolog», чтобы его можно было запустить из REPL (Read-Eval-Print L oop, традиционно называемый «уровень пролога»). Но да, это делается путем создания файла my_predicate.pl
и последующего ввода consult(my_predicate).
или [my_predicate].
(также make.
для его перезагрузки после изменения) в REPL. Обратите внимание на «точку» в конце, чтобы завершить команду.
для трех аргументов таков, как эта вещь ([], [X], X)
Да точно. Это предикат thing/3
, который как-то связывает три аргумента. Как это происходит, каково предпочтительное направление потока информации (например, в thing(X,Y,Z)
, вы можете вычислить Z
из X
и Y
, или проверить Z
, учитывая X
и Y
, или даже вычислить X
и Y
с учетом `Z) зависят от реализации.
Реализация thing/3
, которую вы даете, состоит из 3 пунктов. 1 - это «факт» (имеет только голову), 2 - это «правила» (имеют голову и тело).
что означает, когда говорится, что преуспевает связывание X?
Это означает, что вычисление успешно вычисляет значение, делает X
равным ему и успешно возвращается. Как и в flatten append([1,2,[3,4,5],[6]],[[7],8,[9]]],X)
, "успешно" и при возврате X
"является" (содержит / связан) с плоским списком. X
ведет себя как ссылка на глобальную переменную.
Найдите время, чтобы прочитать вступление: http://www.learnprolognow.org/ и попрактикуйтесь в https://swish.swi-prolog.org/