Для простых скриптов в SWI-Prolog, , использующих REPL для проверки кода вручную, обычно достаточно хорошо. Измененные файлы могут быть перезагружены через make/0
(?- make.
на верхнем уровне). Просто оставьте Prolog REPL включенным во время редактирования, затем сохраните изменения, запустите make.
в REPL и нажмите ↑ , ↑ , Введите , чтобы выполнить последний запрос до make.
из истории.
Основным преимуществом REPL является его интерактивность:
Вы можете поиграть с аргументами.
Переход к отладке или трассировке (как в командной строке, так и в графическом ) очень прост.
Вам не нужно выполнять ввод-вывод для печати результата. Вывод обрабатывается верхним уровнем, который печатает подстановку. Вы видите всю замену, а не только ту ее часть, которую вы случайно напечатали (возможно, случайно пропустив другие части).
Вы можете в интерактивном режиме выбрать, сколько замен вы хотите увидеть для цели, которая будет достигнута несколько раз.
Очевидно, что после последнего результата, возвращенного недетерминированным предикатом, остается точка выбора, которую трудно наблюдать иначе. В этом случае false.
печатается при возврате после последнего результата.
Если вам нужно сохранить тестовые вызовы, чтобы повторить их позже, создайте протокол (стенограмма или «журнал» интерактивного сеанса) и отредактируйте его, чтобы он стал сценарием или даже набором тестов ( увидеть ниже). Протокол представляет собой простой текстовый файл с escape-последовательностями для терминала, содержащий дословную копию того, что вы видите во время интерактивного сеанса. Просмотрите протокол, используя cat protocol.txt
в Linux (и других * NIX) или type protocol.txt
в Windows.
Если интерактивность не требуется, выполняет тестовые вызовы из командной строки неинтерактивно . Давайте проверим CLP (FD) пример факториала n_factorial/2
, сохраненный в factorial.pl
(не забудьте добавить :- use_module(library(clpfd)).
при копировании кода):
$ swipl -q -t "between(0, 9, N), n_factorial(N, F), format('~D ', F), fail." factorial.pl
1 1 2 6 24 120 720 5,040 40,320 362,880
В Windows вам может потребоваться указать полный путь к swipl.exe
, поскольку его нет в переменной PATH, вероятно.
Если вызов всегда один и тот же, вы можете сохранить его в сценарии оболочки или Makefile (run
будет хорошим именем для цели).
В вашем текущем рабочем процессе тестирования функций в C вы создаете новую программу и вызываете тестируемую функцию из ее точки входа (main
function). Сценарии пролога также могут иметь точку входа. См. library(main)
. Пролог не требует компиляции, поэтому вы можете просто вызвать скрипт (./test.pl
) без вызова Make сначала.
Для более крупных проектов вы можете создать менее специализированный набор тестов. Необходима структура модульного тестирования , как PlUnit Его использование выходит за рамки этого ответа; см. документацию.