库(lambda)、currying 和 SWI Prolog 的问题
Problems with library(lambda), currying and SWI Prolog
所以我 运行 在(ab?)使用时遇到了一些麻烦
lambda.pl.
我做了一个"use_module(library(lambda))."
在文件的第一行
我通过 ["a.prolog"] 咨询。
然后我得到一个 "undefined procedure ()/3"
然后是一些乱码。
use_modules 的任何订单都会发生同样的情况。
我是否通过加载 a.prolog 会发生这种情况
[...]、咨询或作为来自 cmdline 的脚本。
我将脚本简化为 Rosseta 代码中的柯里化示例
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'
刷卡提示并立即咨询
a.prolog。然后目标 N=5,.... 工作得很好。
不过,如果我先咨询a.prolog;然后手动
use_module 然后 运行 查询,我得到了错误。
重新咨询对以后没有帮助。
不知何故,提示符下的第一个命令需要
是 use_module.
还是我的加载机制完全错误?
如果是,请道歉;但我很想得到一个
提示如何解决这个问题。
这是第一次使用模块时的常见错误。
请看这一行:
use_module(library(lambda)).
这只是一个事实,说“use_module(library(lambbda))
成立”。
您想要的是 指令。
一个指令是一个带有主函子(:-)/1
的术语。也就是说,你想要:
:- use_module(library(lambda)).
编辑:对于library(lambda)
的特殊情况,我想补充一点,有一个页面有很多关于它的有用信息,有点很难找到:
http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/ISO-Hiord
"Hiord"代表高阶.
所以我 运行 在(ab?)使用时遇到了一些麻烦 lambda.pl.
我做了一个"use_module(library(lambda))." 在文件的第一行 我通过 ["a.prolog"] 咨询。 然后我得到一个 "undefined procedure ()/3" 然后是一些乱码。
use_modules 的任何订单都会发生同样的情况。 我是否通过加载 a.prolog 会发生这种情况 [...]、咨询或作为来自 cmdline 的脚本。 我将脚本简化为 Rosseta 代码中的柯里化示例 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' 刷卡提示并立即咨询 a.prolog。然后目标 N=5,.... 工作得很好。
不过,如果我先咨询a.prolog;然后手动 use_module 然后 运行 查询,我得到了错误。 重新咨询对以后没有帮助。
不知何故,提示符下的第一个命令需要 是 use_module.
还是我的加载机制完全错误? 如果是,请道歉;但我很想得到一个 提示如何解决这个问题。
这是第一次使用模块时的常见错误。
请看这一行:
use_module(library(lambda)).
这只是一个事实,说“use_module(library(lambbda))
成立”。
您想要的是 指令。
一个指令是一个带有主函子(:-)/1
的术语。也就是说,你想要:
:- use_module(library(lambda)).
编辑:对于library(lambda)
的特殊情况,我想补充一点,有一个页面有很多关于它的有用信息,有点很难找到:
http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/ISO-Hiord
"Hiord"代表高阶.