首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的Yap操作符定义有什么问题?

我的Yap操作符定义有什么问题?
EN

Stack Overflow用户
提问于 2016-05-26 08:56:33
回答 1查看 32关注 0票数 0

正在尝试创建列表理解。我这里的代码在SWI Prolog和Jekejeke Prolog中都可以工作,但是<-操作符在Yap中失败了。找不到原因。

必须在/3、findall/3和maplist/2之间创建,因为它们不是Yap的一部分。我相信这三个自制的谓词可以正常工作(它们在Jekejeke Prolog中是这样的)。

Yap 6.2.2似乎无法处理<-运算符。获取紧接在运算符之前的语法错误。

定义运算符:

代码语言:javascript
复制
:- op(700, xfx, [ <- ]).
:- op(450, xfx, [ .. ]).
:- op(1100, yfx, [ & ]).

创建用于列表理解的模板:

代码语言:javascript
复制
Vs <- M..N :-
    integer(M),
    integer(N),
    M =< N,
    betWeen(M, N, Vs).

Vs <- {Var & Dec & Pred} :-
    findAll(Var, mapList(call, [Dec, Pred]), Vs).

使用模板创建从M到N (包括M和N)的素数列表。将列表返回为P。

代码语言:javascript
复制
primes(M, N, P) :- P <- { X & X <- M..N & prime(X) }.

结束。

EN

回答 1

Stack Overflow用户

发布于 2016-05-27 00:09:27

我尝试了许多不起作用的方法,但当我将谓词mapList/2、findAll/3和betWeen/3的定义移到定义新运算符的同一模块中时,问题就解决了。

这三个谓词在Yap中是必需的,因为与SWI-Prolog不同的是,没有提供这三个谓词。也许它们在一个我没有的图书馆里。

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

https://stackoverflow.com/questions/37449894

复制
相关文章

相似问题

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