Когда вы выполняете что-либо в прологе, вы можете видеть, что результат оценки выглядит следующим образом:
истинный
or
ложный
Я хотел бы изменить эти значения на персонализированные.
Основываясь на этом вопросе, Я увидел, что то, что я хочу, определено в файле messages.pl
где я обнаружил, что они определяются как:
query_result(no) --> % failure
[ ansi(truth(false), 'false.', []) ],
extra_line.
query_result(yes(true, [])) --> % prompt_alternatives_on: groundness
!,
[ ansi(truth(true), 'true.', []) ],
extra_line.
Я бы хотел, чтобы вместо получения false
или true
я мог получить <ERROR::>
и <PASSED::>
соответственно для своих модульных тестов.
Дополнительная информация
Я выполняю модульный тест для файла с именем adition.pl
, состоящего исключительно из.
my_add(A,B,Result):- number(A), number(B), is(Result,+(A,B)).
Пытаться
:-['C:/Users/RuslanLopez/Documents/Prolog/adittion.pl'].
%:-['C:/Program Files/swipl/boot/messages.pl'].
:- begin_tests(my_add).
:- include(adittion).
%:- use_module($messages).
%:- include(messages).
error:-write('<ERROR::>'),nl.
passed:-write('<PASSED::>'),nl.
:- dynamic(user:query_result/1).
user:query_result(no) --> % failure
[ ansi(truth(false),'<ERROR::>', []) ].
user:query_result(yes(true, [])) --> % prompt_alternatives_on: groundness
!,
[ ansi(truth(true),'<PASSED::>' , []) ].
test(my_add):-
my_add(1,2,Result),
Result =:= 3.
test(my_add) :-
my_add(1,2,Result),
Result \= 4.
:- end_tests(my_add).
Я понимаю, что более простым решением было бы перейти к файлу и изменить значение непосредственно там, но я действительно хотел бы внести изменения во время выполнения, чтобы изменить это пользовательское поведение только в моем модульном тесте, а не для всей системы.
call/1
предикат для проверки и печати соответственно на основе успеха или неудачи? (Кроме того, вы просмотрели Модульные тесты Prolog - person David Tonhofer   schedule 02.01.2020;
, и я хочу его удалить, и я хочу сделать это без изменения библиотеки, которая добавляет такой терминатор. - person Ruslan López   schedule 05.01.2020