プロローグでのアルゴリズムの「実行」を制限したい。ヒントを教えていただけますか、その方法を教えてください。この述語を見つけました: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.
しかし、timeout(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)を呼び出して、すべて問題ありません。なんで?UPDATE 2に感謝 します:
問題は解決しました。大文字で「引数」を予測する必要があります。