Вопросы

Не понимаю, как 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 присваивает значения переменным.

Читать:
Часть 2: Var vs Const vs Let

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

Как получить доступ к дополнительным ресурсам AWS из созданной Amplify функции Lambda?

admin

Предупреждение: каждый дочерний элемент в списке должен иметь уникальное ключевое свойство, но у меня есть ключевые реквизиты

admin

Сбой задания Jenkins из-за старого рабочего пространства TFS

admin

Запустить скрипт во вкладках Терминала в High Sierra

admin

Как скачать универсальные артефакты из пользовательского интерфейса артефактов

admin

Доступ для локальной разработки к конфигурации приложения Azure с управляемым удостоверением

admin