问题标签 [mercury]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
68 浏览

mercury - 我可以在运行时添加谓词吗?

上下文是一个谓词系统:规则和事实,它们根据客户的情况共同决定支付给客户的金额。大多数规则和事实在编译时是已知的,但有关特定情况的事实仅在运行时处理支付请求时才知道。我知道如何在 Mercury 中对系统进行编程,以防所有谓词在编译时都已知(即是源代码的一部分),但我不知道如何在运行时引入谓词。是否可以编写一个函数来构造具有给定参数的谓词,然后能够将构造的谓词用作计算金额的上下文的一部分?

0 投票
1 回答
53 浏览

mercury - 使用本地模块时出现 Mercury“未定义引用”编译错误

我有一个模块导出nat/1以测试/生成自然数:

和同一目录中的主模块进行尝试:

我运行mmc --make-int nat.m它成功生成了接口文件,但是当我运行时mmc main.m出现以下错误:

我正在使用 MMC version 20.06.1, on x86_64-pc-linux-gnu

我错过了一些明显的东西吗?代码改进也非常受欢迎。

0 投票
1 回答
117 浏览

prolog - 如何像在 Prolog 中一样在 Mercury 中生成新变量列表?

在 SWI Prolog 中,list(Xs) :- length(Xs, _).它是“纯粹的”,因为我可以将具有任何类型实例化的变量传递给它,并且它将不确定地将它与特定长度的所有最通用的统一器统一起来。

list/1是否可以在 Mercury中编写纯文本?该手册似乎暗示可以做到这一点,但我在实际实施时遇到了麻烦。

到目前为止,我所拥有的是:

但是,当我尝试这个时:

我收到以下错误:

我猜我的使用free可能不正确,否则我需要添加一个额外的模式或概括我的listskelinst 以涵盖mylist(Xs), Xs = [5].

基本上,我应该怎么写mylist/1,以便它可以在尽可能多的模式下使用?

谢谢!