【问题标题】:functional and pure programming languages函数式和纯编程语言
【发布时间】:2011-01-15 20:26:59
【问题描述】:

哪些编程语言是函数式的和纯的?

【问题讨论】:

标签: programming-languages functional-programming


【解决方案1】:

可能有很多,但大多数人知道和使用的主要是Haskell

还有一些是MirandaClean

【讨论】:

  • 请注意,Miranda 在这一点上基本上已经不复存在并被 Haskell 取代。 Clean 仍在积极开发中。
  • Miranda 仍然在 SPJ 关于函数式语言实现的论文中使用:)。我想重写整篇论文以使用 haskell 的一个子集作为目标语言,因为我非常不喜欢 Miranda 对大写的使用(或者可能只是它们)
【解决方案2】:

一个不错的函数式编程语言是 Agda: http://www.cse.chalmers.se/~ulfn/papers/afp08/tutorial.pdf

由于依赖类型,可以定义一些在其他语言(如 haskell)中无法定义的函数。例如。函数的类型 (Vec n -> Vec n),返回与其参数长度相同的向量,例如 sort 就是这种类型。 [WAS“我相信有些论文认为它比 haskell 更纯粹。”编辑前。]

agda 的优点是源代码非常好,类似于haskell。此外,可以调用和使用任何 haskell 函数。缺点主要是目前标准库变化太频繁。

只需查看列表的源代码: http://www.cse.chalmers.se/~nad/listings/lib-0.4/Data.List.html#209

当然也有类似的函数式编程语言,比如 coq、epigram 等。

并在维基百科中提到库里-霍华德:
http://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence

一些关于依赖类型的链接(包括一些 Agda 链接): http://www.reddit.com/r/dependent_types/

【讨论】:

  • Agda 是一种依赖类型的编程语言/定理证明器。它目前主要用于研究,在任何有意义的意义上都不比 Haskell 更纯粹。 Epigram 与 agda 类似,只是目前根本没有很好的工作实现——Epigram 2 的开发是一个正在进行的研究项目。 Coq 根本不是一门语言(尽管它可以提取某些语言),而只是一个定理证明器。
  • 你好 Sclv。更改了帖子的一部分。关于 Coq,根据 Wiki 百科:“Coq 实现了一种依赖类型的函数式编程语言。[1]”。要么维基百科错了,要么我有误解。是的,Agda 主要用于研究,但对于 haskell 也可以这样说。我认为如果agda 的发展继续下去,将会引起浓厚的兴趣。它应该被列为纯函数式编程语言之一。
【解决方案3】:

Lambda 演算和 SK 演算也是两种非常重要的纯函数式编程语言。

【讨论】:

    猜你喜欢
    • 2010-12-23
    • 2023-03-04
    • 2013-07-23
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2010-10-25
    • 2010-10-30
    相关资源
    最近更新 更多