2017-03-26 27 views
1

我想從my(yap)prolog腳本運行一個(python3)進程,並將其輸出格式化爲整數列表(例如, [1,2,3,4,5,6]使用Yap-Prolog從流中讀取列表

這是我做的:

process_create(path(python3), 
    ['my_script.py', MyParam], 
    [stdout(pipe(Out))]), 
read(Out, OutputList), 
close(Out). 

但是,它未能在讀/ 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給出了相同的錯誤。 YAP-Prolog中未定義read_string/3

我該如何解決這個問題?

回答

0

在yap-users郵件列表上詢問後,我得到the solution

帶有libGMP選項的重新編譯的YAP Prolog 6.2.2現在可用。它也可能發生在32位YAP中。