Я написал код ниже в прологе:
go :- write(">>"), read(X), process(X).
И делать разные вещи с процессом / 1.
Чтобы поймать любые неизвестные команды, которые я добавил:
process(Y) :- write("unknown command.\n"), go.
Проблема в том, что при выходе из SWI-пролога, закрывая окно до нормального завершения программы, оно попадает в бесконечный цикл.
Я пытался найти то, что вызывает swi-prolog при выходе, но не смог найти его, чтобы включить в код.
Любая помощь в этой части или альтернативный обходной путь будет очень признателен.
Заранее спасибо!