在Prolog中比在Haskell中更好地解决了哪些问题?这两种语言之间的主要区别是什么?
编辑
是否有可以模仿Prolog功能的Haskell库(一种逻辑解算器)?
gkn*_*uth 37
关于逻辑库问题:如果它不存在,应该可以通过各种方式构建一个.在合理的策士建立逻辑推理能力到方案.PLAI的第33-34章讨论Prolog并实施Prolog.这些作者正在构建Scheme和Prolog之间的桥梁.在Haskell的惰性评估功能之后,PLT Scheme的创建者将其作为一种语言构建为一种懒惰方案.Oleg Kiselyov的LogicT论文像往常一样辉煌 - 他推动了许多语言的可能性.Haskell Wiki上还有一个逻辑编程示例.
Kor*_*icz 32
Prolog主要是针对逻辑问题的语言,尤其是来自AI和语言领域的语言.Haskell更像是一种通用语言.
Prolog是声明性(逻辑)语言,它更容易在其中陈述逻辑问题.Haskell是一种函数式语言,因此更适合于计算问题.
关于声明性编程的维基百科:
在计算机科学中,声明性编程是一种编程范式,它在不描述其控制流的情况下表达计算的逻辑.它试图通过描述程序应该完成的内容来最小化或消除副作用,而不是描述如何完成它.这与命令式编程形成对比,命令式编程需要运行算法的详细描述.
声明性编程将程序视为形式逻辑的理论,并将计算视为逻辑空间中的推论.声明性编程最近变得特别令人感兴趣,因为它可以极大地简化编写并行程序.
维基百科的函数式编程:
在计算机科学中,函数式编程是一种编程范式,它将计算视为数学函数的评估,并避免状态和可变数据.它强调功能的应用,与强调状态变化的命令式编程风格形成对比.函数式编程的根源在于lambda演算,这是一个在20世纪30年代开发的用于研究函数定义,函数应用和递归的正式系统.许多函数式编程语言可以被视为lambda演算的装饰.
简而言之,声明性语言声明了一组关于哪些输出应该来自哪些输入并使用这些规则来推导输入的输出的规则,而功能语言则声明一组数学或逻辑函数,这些函数定义输入如何转换为输出.
至于ADDED问题:我不知道但你可以将 Haskell 翻译成Prolog,或者在Haskell中实现 Prolog :)
Jes*_*erE 31
Prolog是一种逻辑编程语言,而Haskell是一种函数式语言.函数式语言基于函数的概念,该函数接受大量参数并计算值.
另一方面,Prolog没有功能.相反,谓词用于证明"定理".Prolog谓词不计算值,它们可以回答"是"或"否",并可选择将输入变量绑定到值:
功能和逻辑编程的有用性经常重叠.函数式编程最近获得了相当大的吸引力,而Prolog仍然是一种小众语言,很大程度上是因为它与主流OOP的函数和方法的常见概念比函数式编程更加不同,而且经常被认为是(非常)难学.
在Prolog中实现某些问题几乎是微不足道的,特别是与约束求解器结合使用时.
您可以在Wikipedia上阅读有关逻辑编程的更多信息.
Ian*_*oss 11
您可能会发现" 逃离Zurg:逻辑编程中的练习 "这篇论文是一本有趣的读物.它显示了Prolog和Haskell中简单搜索问题的实现的并排比较,以及用于更一般地表示搜索问题的小型类型框架.作者得出的结论是,在Haskell中至少表达一些类型的问题比在Prolog中更容易,主要是因为Haskell类型系统使得更容易提出搜索状态的良好表示并从一个状态转移到另一个状态.
归档时间: |
|
查看次数: |
27546 次 |
最近记录: |