prolog - SWI Prolog 函数包

标签 prolog swi-prolog

我有一个 prolog 源文件,它允许我很好地使用 ($)/2 元谓词,但是当我将它转换为如下模块时,我会在任何地方出现语法错误 $ 用于工作:

:- module('mymodule', [mypred1/2, mypred2/3, ($)/2]).
:- use_module(library(func)).

我也尝试过reexport,但无济于事。

所以像 X is mypred1$"something" 这样的事情给我一个语法错误。但是,从源文件中删除 :- module(... 行可以解决此问题。

如何让 $ 在模块中正常运行?

最佳答案

当您使用自定义中缀运算符 ($)/2 并引入模块“边界”时会出现问题。

实现 Prolog lambdas时, Ulrich Neumerkel 面临同样的问题! 对于特定于 SWI 的修复,请查看并研究 lambda.pl ——开始于:

:- module(lambda, [(^)/3, (^)/4, (^)/5, (^)/6, (^)/7, (^)/8, (^)/9, (^)/10,
                   (\)/1, (\)/2, (\)/3, (\)/4, (\)/5, (\)/6, (\)/7, (\)/8,
                   (+\)/2, (+\)/3, (+\)/4, (+\)/5, (+\)/6, (+\)/7, (+\)/8, (+\)/9,
                   op(201,xfx,+\)]).

就是这样!

此外,请阅读 module/2 上的 SWI 手册一切顺利!

关于prolog - SWI Prolog 函数包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37560222/

相关文章:

序言 clpfd : creating arithmetic constraints from data

list - Prolog将整数转换为数字列表

序言挑战

prolog - Prolog中arity 3的运算符

java - 如何在Ubuntu11.04上使用JPL解决 "Symbol lookup error"?

java - German Umlaute 的问题,从 SWI Prolog 到 JAVA 的 TCPIP

prolog - CLP:对结构化变量的约束?

algorithm - 什么是统一算法?

c# - swi-cs-pl 使用资源文件创建引擎

c++ - 在C程序中集成Prolog