ib8*_*b84 10 functional-programming logic-programming mercury curry
我对Prolog的力量感到非常惊讶.花了一些时间来解决问题,但对我来说,它似乎是那里最酷的声明性语言.这就是为什么最近,在使用Scala进行了两年的函数式编程之后,我决定再次看一下逻辑编程,以"训练我的大脑"或更好地实际使用.
结合功能和逻辑编程似乎对我学习/巩固两种声明范式的概念很有吸引力.我发现强力型系统非常有用且引人入胜.
Scala真的与interop一起闪耀.我们不要重新发明轮子.它应该能够用另一种主要语言调用代码,并且最好也可以调用.但它不一定是Java.C或Haskell也可以.
那么,今天最有用和最具启发性的FLP语言,您对它们的看法和建议是什么?
这是我到目前为止发现的:
水星:声称是快速,强类型的Prolog.纯粹的声明,但没有逻辑变量!没有约束编程?似乎是使用最广泛的FLP.互操作?
库里:看起来很有前途,也是最先进的,但现在文档上有点低."实验"是否意味着不成熟/不准备潜入?只是基于Haskell或实际上与Haskell的良好互操作?
Ciao:似乎提供了我想要的许多功能,但Stack Overflow似乎根本不知道它,虽然它自1984年以来就存在了?它出什么问题了?互操作?
drools(java library/DSL):声称它允许混合前向和后向链接.成熟.直接与Java/Scala互操作,但依赖于可变数据/命令式构造?它与功能JVM语言的集成程度如何?
miniKanren:实现存在于多个平台上.如何互操作?高效?
Lambda Prolog实现,例如:
良好但理论上的阅读并偏向于咖喱,而不是解决实际问题: