SWI-Prolog: Как написать решение для вывода командной строки?
Я использую SWI-Prolog с библиотекой clpr для решения ограничений на действительные числа. Я делаю это, вызывая SWI-Prolog из командной строки и анализируя вывод другой программой.
Например, чтобы решить что-то вроде {F = 1.8 * C + 32}, {C = 25}.
Я генерирую следующую команду:
swipl \
-g "use_module(library(clpr))" \
-g "{F = 1.8 * C + 32}, {C = 25}, write(\"F -> \"), write(F), write(\"\\n\")" \
-g halt
И вывод из SWI-Prolog:
F -> 77.0
Это прекрасно работает, если результатом является простое число, но не если результат снова является ограничением (или более сложным решением в целом). Например, для {X > 3}, {Y < 5}, {X + Y = 10}.
Я получаю решение {Y < 5.0, X = 10.0 - Y}
в среде SWI-Prolog, но я не нашел способа записать это в вывод командной строки. Есть ли способ сделать это?
1 ответ
Решение
Вы можете использовать предикат dump/3, например:
{X > 3}, {Y < 5}, {X + Y = 10}, dump([X,Y], [x,y], L), write(L).
производит:
[y=10.0-x,x>5.0]