所以我在(ab?)使用时遇到了一些麻烦 lambda.pl。
我做了一个" use_module(library(lambda))。" 在文件的第一行 我通过[" a.prolog"]咨询。 然后我得到一个"未定义的程序()/ 3" 然后是一些胡言乱语。
任何use_modules顺序都会发生同样的情况。 无论我是通过加载a.prolog,都会发生这种情况 [...],咨询或作为cmdline的脚本。 我将脚本缩减为Rosseta代码中的currying示例 https://rosettacode.org/wiki/Currying#Prolog
use_module(library(lambda)).
:- initialization(main, main).
main :-
N = 5, F = \X^Y^(Y is X+N), maplist(F, [1,2,3], L),
print(L).
它没有用。
然而,如果我手动加载' lambda' 在swipl-prompt和immeditately咨询 a.prolog。然后目标N = 5,....工作得很好。
但是,如果我先咨询a.prolog;然后手动 use_module然后运行查询,我得到错误。 重建没有任何帮助。
不知何故,提示符处的第一个命令需要 是use_module。
或者我的加载机制是否完全错误? 如果是的话,请道歉;但我很想得到一个 提示如何解决这个问题。
答案 0 :(得分:4)
首次使用模块时,这是一个常见错误。
请看一下这一行:
use_module(library(lambda)).
这只是事实,说“use_module(library(lambbda))
成立。”
您想要的是指令。
指令是一个带有主要仿函数(:-)/1
的术语。也就是说,你想要:
:- use_module(library(lambda)).
编辑:对于library(lambda)
的特定情况,我想补充说有一个页面包含很多有用的信息,有点难以找到:< / p>
<强> http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/ISO-Hiord 强>
“Hiord”代表更高级别。