I установки следующие правила, чтобы найти, если существует связь между двумя элементами:Как настроить PrologScript
directReference(A,B) :- projectReferences(A,B).
transitiveReference(A,C) :- directReference(A,B),directReference(B,C).
transitiveReferenceD1(A,D) :- transitiveReference(A,C),directReference(C,D).
transitiveReferenceD2(A,E) :- transitiveReferenceD1(A,D),directReference(D,E).
Могу ли я написать PrologScript, которая будет проверять все эти запросы на факт? Хотя я планирую использовать Ruby Rake, кто-то пытается сделать неинтерактивный вызов с PHP here, и он не сработал. Я также видел this answer и пробовал ответить Каарелю. Я просто добавил новый opts_spec
:
opts_spec(
[ [opt(day), type(atom),
shortflags([d]), longflags(['term', 'day']),
help('name of day')]
, [opt(goal),
shortflags([g]), longflags([goal]),
help('goal to be called')]
, [opt(projectReferences), type(atom),
shortflags([pr]), longflags(['term', 'projectReferences']),
help('Project Reference lookup')]
]
).
Я скомпилирован с:
.\swipl.exe -o day.exe -g main -c "D:\DevProjects\AskJoe\Output\Sample.pro"
И побежал с:
./day.exe -g "day(Sunday)"
И получил ошибку:
ERROR: Prolog initialisation failed: ERROR: validate_opts_spec/1: Domain error:
unique_atom' expected, found
term' (ambiguous flag)
Моя цель состоит в том, чтобы эта работа:
./day.exe -g "transitiveReference('a','b')"
мне не нравится компиляции «day.exe», чтобы запустить скрипт (according to the docs это часто не нужно), но я не нашел другой способ передать аргументы правилам.
Я видел basic intro на swi-pl.org, что не помогло. Он не объясняет, как сделать скачок из примера файла script.sh для выполнения ./eval 1+2
. На самом деле, пример - комментарий, поэтому я полностью потерял
Я считаю, '. \ swipl.exe' необходим только для систем Windows. –