问题标签 [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.
prolog - 哪个更有趣或更强大:Curry、Mercury 或 Lambda-Prolog?
我想问你从头开始/逆向工程实现什么正式系统会更有趣。
我浏览了一些现有的和开源的逻辑/声明式编程系统项目。我决定在空闲时间编造一些类似的东西,或者至少要掌握实施的总体思路。
如果其中一些系统能够提供现代学术研究逻辑及其与计算模型的关系的大部分表达能力和简洁性,那就太好了。
你会建议至少在概念层面学习什么?例如,Lambda-Prolog 很有趣,特别是因为它允许更高阶的关系,但 AFAIK 是基于直觉主义逻辑的,因此缺乏排中原则;这对我来说通常是一个缺点。
我也欢迎任何关于不太流行但更具表现力/功能强大的现代逻辑编程系统的建议。
logic - Mercury的ADT房产
我徘徊为什么 Mercury (10.04) 不能推断下一个片段的确定性:
它抱怨:
但io.res
只有io.ok/1
和io.error/1
。
下一段代码编译得很好:
更新#1:它甚至可以决定:
typeclass - Mercury 语言中类型类的多态实例
考虑下一个声明:
水星(10.04)产生:
即使没有函数依赖,它也不允许使用类型变量声明实例。
我是否遗漏了什么或 Mercury 不允许不以地面实例结尾的实例?
有没有办法声明多态类型的实例,它是任何类型的包装器(没有约束)?也许存在一些特殊的类型类,比如all_types(T)
?
mercury - 将列表转换为 Mercury 中的元组列表
我只是水星的初学者,发现很难解决这个问题。我想将一个列表转换为从较小到较高频率排序的元组列表。例如:
你可以看到所有的元组列表都是按照频率从小到大排序的。
我在问是否有人可以帮助我解决它或指向教程的指针,我可以在其中找到更多提示。
感谢您的回复。
ide - 支持 Mercury 的 IDE 或编辑器
除了 emacs,还有支持 Mercury 的 IDE 或编辑器吗?
unification - 水星中的 ":=" 和 "=>"
我最近在 Mercury 中遇到了这个代码示例:
=
作为一名 Prolog 程序员,我想知道:正常的统一和这里使用的:=
or有什么区别?=>
在Mercury 参考文献中,这些运算符获得不同的优先级,但它们没有解释差异。
lambda - Mercury:如何声明高阶数据类型的确定性?
当我编译下面的 Mercury 代码时,我从编译器中得到这个错误:
我认为编译器的意思是“当你声明类型test_case
时,你没有指定确定性,所以我认为你的意思是det
。但是你传入了一个semidet
lambda。”
我的问题:
- 声明类型的确定性的语法是什么?我尝试过的猜测都导致了语法错误。
- 有人可以解释' 实例化的
/* unique */
部分是什么意思吗?TestCase
这会导致给定和预期实例化之间的不匹配吗? - 有没有更简洁的方式来声明 lambda
main
?我对 lambda 的声明与我在 lambda 中的代码一样多。
编码:
pattern-matching - Mercury:确定性和模式匹配
我有一个半确定性的功能。当我重写它以使用模式匹配而不是 if 语句时,Mercury 说它变得不确定。我想了解为什么。
原代码:
修改后的代码:
我习惯于考虑 SML 中的模式匹配,其中情况 A 中的 0 将确保情况 B 中 N 不为 0。Mercury 的工作方式是否不同?即使 N 为 0,案例 B 也会被调用吗?(我在N \= 0
案例 B 中添加了该子句,希望使谓词具有半确定性,但这没有用。)
有没有办法用也是半确定性的模式匹配来编写这个谓词?
mercury - Mercury 中不受限制的变量名声明
我想在 Mercury 中声明一种数据类型,它可以具有可变数量的值和名称。例如 :
有三个变量/值。
我想要类似的东西:
那就是变量的数量不受限制或固定。
所以我可以使用 myplayer 来声明值/变量,例如v1, v2, v3 and v4.
第二次我可以使用它来声明类似:a, b, c, d, e, z, aa, ab and az
.
值的数量不受限制,名称也不固定。
我是水星的新手。
mercury - 水星安装
我已经从http://www.mercury.csse.unimelb.edu.au/download/release.html下载了 Mercury 11.07.1
并且还在我的 Windows 7 PC 上安装了 cygwin。但是我不知道如何安装水银。有没有人可以帮助我的安装指南?