问题标签 [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 回答
133 浏览

mercury - Mercury 是否支持代数谓词?

我对 Mercury 和一般的逻辑编程非常陌生。我在文档或示例中没有找到这样的数字示例...

以示例谓词为例:

有了这个,A 必须接地,B 是自由的。如果我希望 A 自由而 B 接地(例如,添加mode diffThirtyFour(out,in) is det.)怎么办。这种代数可以在编译时执行吗?我可以很容易地定义另一个谓词,但这似乎不太合乎逻辑......

更新

所以,像这样的作品:

有点警惕semidet,和第二个目标的冗余。这是唯一的方法吗?

更新 2

这可能是答案......它在编译时发出警告,说明分离永远没有任何解决方案。一个正确的警告,但可能是不必要的代码气味?这可以满足我的需要,但如果有更好的解决方案,请随时发布它们......

0 投票
1 回答
96 浏览

mercury - 当 Microsoft 管理控制台应该是 Melbourne Mercury 编译器时,Windows 将 mmc 错误

我采取了这些步骤:

但 Windows 会为 Microsoft 管理控制台弹出一个对话框。

如何在 .m 文件上调用 Melbourne Mercury 14 编译器?之前的 stackoverflow 问题是针对 Mercury 11.07.1 的,它指的是 Mercury 14 中没有的 README 文件。

Mercury 适合我希望的跨平台工具链:

平台:Windows 10、Mercury 14、Visual Studio Community 2017

0 投票
1 回答
134 浏览

mercury - 汞清单统一

我正在尝试学习Mercury。我一直在搞乱列表,但我无法让看似简单的统一工作。这是我简化的示例案例:

在线List = [1,2]我收到以下错误(格式化并稍作编辑):

不过,这似乎不对;特别是 的实例化[1,2]。这是一个字面意思;它的实例化不应该像,list.'[|]'( unique(1), list.'[|]'( unique(2), [] ) )吗?

这是否与此处相同的部分实例化问题有关?

0 投票
1 回答
128 浏览

lambda - Mercury:如果在顶层声明,则此谓词有效,但不能作为 lambda

(下面的摘录来自这个测试套件,它是这里找到的两文件程序的一半。)

我以两种方式定义了辅助谓词:一次在顶层(称为helper),一次作为 lambda(称为Helper)。在下面代码的最后三行中,我使用了那个辅助谓词。如果我使用helper它可以工作,但如果我使用Helper我会得到一个错误(如下)。

我怀疑问题可能是我能够为类型级别谓词指定类型签名和模式签名,但只能为 lambda 指定模式签名。(如果这是问题所在,我不知道该怎么办。)

以下是相关代码:

这是我从使用中得到的错误Helper

0 投票
1 回答
50 浏览

mercury - How do I specify compile time defines in Mercury?

How do I specify compile time defines in Mercury?

I would like to have the build system read the version number out of a configuration file and pass it into the module for access by predicates and functions.

For example, in C I'd do something like: gcc -DVERSION="1.2.0", and then use the newly defined macro VERSION in the source.

0 投票
1 回答
29 浏览

mercury - 是什么导致 Mercury 中函子“field_name/1”的参数类型错误?

当我编译我的源代码时,我收到以下错误:在仿函数“source/1”的参数中输入错误

编译器正确确定参数的类型,但不断尝试使用不同记录中的字段。

怎么了?

0 投票
1 回答
207 浏览

clp - Mercury 约束求解

我知道一点 Prolog,并且经常使用 CLP(FD) 等。 这篇论文(显然写于 2006 年)表明 Mercury 现在也有约束求解。我在图书馆参考手册中发现了一些提及它。 但是,我找不到如何使用它。例如:

给出编译器错误

但在 Prolog 中,使用 clpfd,

工作正常,给 A = 2 。

(在 Mercury 代码中添加 #s 无济于事。)

您如何在 Mercury 中进行约束求解?

0 投票
2 回答
113 浏览

mercury - Det 中的 Mercury nondet

在 Mercury 中,假设您在一个det谓词中,并且您想调用一个nondet谓词,如下所示。如果没有解决方案,你想要Result = [];如果有一个或多个,你只想要第一个喜欢Result = [FirstSolution]. 谓词可能有无限数量的nondet解,因此您无法将它们全部枚举并取第一个。我最接近的是使用do_while并在第一个解决方案之后停止,但do_while显然cc_multi我不知道如何将它强制回到det上下文中,甚至回到multi上下文中以便我可以应用solutions它。

0 投票
1 回答
75 浏览

functional-programming - 从术语/目标列表中查找成功次数

如果列表中的数字exactly/2恰好等于 1 ,我编写了以下谓词:NL

例如,调用exactly(X, [1, 0, 0, 1, 0, 1])将绑定X3.

N我想创建类似的东西,但对于谓词:如果列表中的目标完全成功,我想编写一个成功的谓词L

例如,调用exactly(X, [true, false, member(1, [1, 2, 3]), member(0, [1, 2, 3])])应该绑定X2.

0 投票
2 回答
176 浏览

functional-programming - 什么是“强模式”编程语言?

我正在浏览 Mercury 编程语言的about 页面时,我发现它说:

Mercury 是一种强模式语言

这是什么意思!?我在整个互联网上搜索,但没有找到答案!