Вопросы

Не понимаю, как Prolog присваивает значения. Почему Prolog не связывает X, если нет скобок?

Я использую SWI для Windows и пробую выполнить упражнение в Learn Prolog Now!

travel(Start,Dest,X) :-
    (byCar(Start,Dest); byTrain(Start,Dest); byPlane(Start,Dest)),
    X = go(Start,Dest).

В этом коде, если вы можете получить доступ к Dest из Start, Prolog говорит:

правда.

X = go (Start, Dest)..

и просто говорит ложь иначе.

Однако в этом коде, когда я удалил круглые скобки, он говорит только «истина», если она действительна, и «ложь», если она недействительна. Ответ правильный, но почему он не выводит X?

travel(Start,Dest,X) :-
    byCar(Start,Dest); byTrain(Start,Dest); byPlane(Start,Dest),
    X = go(Start,Dest).

Это из-за приоритета оператора, в котором сначала вычисляется AND? Даже если это так, разве X не должен быть равным (Start, Dest)?

Меня смущает то, как Prolog присваивает значения переменным.

Читать:
Получение данных из QuerySnapshot во флаттере

Похожие записи

Переменные воздушного потока по умолчанию — Настройка инкрементной нагрузки

admin

Pycharm не распознает установку Django

admin

Не удается преобразовать значение типа в ожидаемый тип аргумента?

admin

Что именно делает параметр GCC -Wpsabi? Каковы последствия его подавления?

admin

Различные уровни доступа для AWS Cognito

admin

Конвейер Azure DevOps не может расширять ни одну из переменных среды во время выполнения.

admin