【发布时间】:2018-09-05 04:53:30
【问题描述】:
所以我在(ab?)使用时遇到了一些麻烦 lambda.pl.
我做了一个“use_module(library(lambda))”。 在文件的第一行中 我通过 ["a.prolog"] 进行咨询。 然后我得到一个“未定义的过程()/ 3” 之后还有一些乱七八糟的东西。
use_modules 的任何顺序都会发生同样的情况。 我是否通过加载 a.prolog 会发生这种情况 [...],咨询或作为 cmdline 中的脚本。 我将脚本简化为罗塞塔代码中的柯里化示例 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 提示和立即咨询 a.序言。然后目标 N=5,.... 就可以了。
但是,如果我先咨询 a.prolog;然后手动 use_module 然后运行查询,我得到了错误。 重新咨询无济于事。
不知何故,提示符处的第一个命令需要 是use_module。
还是我完全弄错了加载机制? 如果是这样,请道歉;但我很想得到一个 提示如何解决这个问题。
【问题讨论】:
-
次要评论:宁可使用
F_2代替F。通过这种方式,您可以清楚地表明F_2是一个不完整的目标,需要两个进一步的参数。
标签: prolog swi-prolog