Чтение списка из потока с помощью Yap-Prolog
Я хочу запустить процесс (python3) из моего скрипта пролога (yap) и прочитать его выходные данные в формате целых чисел, например: [1,2,3,4,5,6]
,
Вот что я делаю:
process_create(path(python3),
['my_script.py', MyParam],
[stdout(pipe(Out))]),
read(Out, OutputList),
close(Out).
Однако, это терпит неудачу в предикате read/2 с ошибкой:
PL_unify_term: PL_int64 not supported
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>
BrokenPipeError: [Errno 32] Broken pipe
Я уверен, что я могу запустить процесс правильно, потому что с [stdout(std)]
параметр, данный process_create
выходы программы [1,2,3,4,5,6]
как и ожидалось.
Странно то, что когда я изменяю процесс для вывода некоторого постоянного члена (как constant_term
) это все равно дает то же самое PL_int64
ошибка. Добавление точки к выводу процесса ([1,2,3,4,5,6].
) не решает ошибку. С помощью read_term/3
выдает ту же ошибку. read_string/3
не определено в YAP-Прологе.
Как я могу решить эту проблему?
1 ответ
Спросив в списке рассылки yap-users, я получил решение.
Перекомпилировал YAP Prolog 6.2.2 с опцией libGMP и теперь он работает. Это также может произойти в 32-битном YAP.