首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Yap-Prolog从流中读取列表

使用Yap-Prolog从流中读取列表
EN

Stack Overflow用户
提问于 2017-03-26 13:43:30
回答 1查看 83关注 0票数 1

我想从我的(yap) prolog脚本中运行一个(python3)进程,并将它的输出格式化为整数列表,例如[1,2,3,4,5,6]

我就是这样做的:

代码语言:javascript
复制
process_create(path(python3),
    ['my_script.py', MyParam],
    [stdout(pipe(Out))]),
read(Out, OutputList),
close(Out).

但是,它在读/2谓词时失败,错误如下:

代码语言:javascript
复制
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中没有定义.

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-28 07:16:40

在询问了yap用户的邮件列表后,我得到了解决方案

使用libGMP选项重新编译YAP 6.2.2,现在它可以工作了。它也可能发生在32位YAP.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43029488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档