gpt4 book ai didi

prolog - 库(lambda)、柯里化(Currying)和 SWI Prolog 的问题

转载 作者:行者123 更新时间:2023-12-02 07:20:19 25 4
gpt4 key购买 nike

所以我在(ab?)使用时遇到了一些麻烦lambda.pl。

我做了一个“use_module(library(lambda))”。在文件的第一行我通过[“a.prolog”]进行咨询。然后我得到一个“未定义的过程()/3”然后就是一些胡言乱语。

对于任意顺序的 use_modules 都会发生同样的情况。无论我通过以下方式加载a.prolog,都会发生这种情况[...],请查阅或作为命令行中的脚本。我将脚本简化为 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 提示下立即咨询a.序言。那么目标 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”代表更高阶

关于prolog - 库(lambda)、柯里化(Currying)和 SWI Prolog 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49501726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com