Я пытаюсь создать прологическое меню, в котором сценарий просит пользователя ввести некоторые данные, поэтому все это цепочка write (), read (), nl и, возможно, некоторая writeln ().
Проблема в том, что по какой-то причине функция read () удерживает вывод записи до тех пор, пока все чтения не завершатся.Это проблема, потому что все эти записи говорят suer, что вводить.
Я сделал тестовый код для демонстрации того, что происходит, потому что мой настоящий проект - беспорядок:
test:-
write("X is "),
read(X),
writeln("Y is "),
read(Y),
writeln("Z is "),
read(Z),
write([X,Y,Z]).
Эточто я ожидаю:
?- test.
X is
|: 1.
Y is
|: 2.
Z is
|: 3.
[1,2,3]
true.
Но вот что я получаю:
?- test.
1.
|: 2.
|: 3.
X is Y is Z is [1,2,3]
true.
SWI является многопоточным, 64-битным, версия 7.6.4, и я в KDE Neon 5.16.2 (на основе Ubuntu 18.04, ядро 4.15.0-54