Я хочу ограничить «выполнение» алгоритма в прологе. Можете подсказать, как это сделать? Я нашел этот предикат: call_with_time_limit Как я могу поймать time_limit_exceeded исключение? Спасибо
ОБНОВЛЕНИЕ:
Я пытаюсь это сделать следующим образом:
timeout(t) :-
catch(call_with_time_limit(t, sleep(5)), X, error_process(X)).
error_process(time_limit_exceeded) :- write('Timeout exceeded'), nl, halt.
error_process(X) :- write('Unknown Error' : X), nl, halt.
но отметив, что произошло, когда я вызываю тайм-аут (1):
prolog :-
timeout(1),
но когда я делаю это так:
runStart :- call_with_time_limit(1, sleep(5)).
timeout(1) :-
catch(runStart, X, error_process(X)).
error_process(time_limit_exceeded) :- write('Timeout exceeded'), nl, halt.
error_process(X) :- write('Unknown Error' : X), nl, halt.
и снова вызов timeout(1) все в порядке. Почему? Спасибо ОБНОВЛЕНИЕ 2:
Проблема решена, необходимо иметь предкат "аргумент" с заглавными буквами...