【发布时间】:2010-10-03 21:07:20
【问题描述】:
众所周知,所有函数式语言都具有一些基本属性,例如使用函数作为程序的基本构建块,其后果是使用递归而不是迭代。但是,也存在一些根本性差异。 Lisp 对 Lisp 代码和数据使用单一表示,而 ML 没有 ML 代码的标准表示。 Erlang 有一个内置的基于actor的并发。 Haskell 有单子。 Haskell 在静态类型系统中区分了纯函数和不纯函数;机器学习没有。
其他函数式语言(Clojure、F#、Arc 等)之间有哪些显着的根本区别?我所说的基础是指影响你使用这种语言开发方式的东西,不,例如,它是否与一些广泛使用的运行时集成。
【问题讨论】:
-
大多数函数式语言确实区分代码和数据。 Lisp 在这方面是非典型的。
-
我的错,看的不够深入,对 Lisp 和 Erlang 做出了这个错误的结论。
-
我不清楚问题是什么。你在问吗? “是什么让 F# 与 Clojure 不同”,或者你在问什么?您是否正在寻找有关特定语言或一般 FP 语言的信息?
-
是的,就像“F# 与 Clojure 的不同之处”。例如。 Haskell 通过拥有 monad 与 Lisp 区分开来。
-
Monad 与众不同,但我认为它们是更基本特征的副作用:monad 在惰性、纯语言中变得有用,并且需要高阶数据类型。
标签: haskell f# functional-programming erlang clojure