F#和Clojure之间存在显着差异

时间:2009-05-27 11:05:37

标签: clojure f# functional-programming

F#和Clojure之间最重要的区别是什么?

哪个结构有F#,而Clojure没有,反之亦然?

F#有宏吗?

7 个答案:

答案 0 :(得分:56)

大多数差异将源于F#来自ML而clojure来自lisp的事实。

所以F#有更多的ML / OCaml / Haskell感觉,强调:

  • 静态输入
  • 类型推断
  • 模式匹配

虽然clojure有更多的Lisp感觉,但强调:

  • s表达式

同样正如Brian所说,F#是一种.Net语言,而clojure是一种JVM语言,因此每个人都可以访问大量但不同的库。

答案 1 :(得分:8)

Clojure是一种lisp,实际上是lisp-1家族语言。 F#实际上是OCaml采用的.net平台。

答案 2 :(得分:6)

一个关键的区别是F#是一种.NET语言,而Clojure是在JVM上运行的。因此,部署和支持的平台将是不同的。

请注意,单声道支持F#。

至于宏,我认为you're out of luck

答案 3 :(得分:6)

看起来在CLR上运行Clojure需要付出一些努力。看起来很有希望。

http://github.com/richhickey/clojure-clr

答案 4 :(得分:3)

它们都是functional first编程语言,但它们的类型系统非常不同。 F#是一种强类型语言,Clojure是一种动态类型语言,所以

  1. Boumbles对什么是Difference between Strong vs. Static Typing AND Weak vs. Dynamic Typing;
  2. 的回答
  3. haylem对Dynamically vs Statically typed languages studies的回答;或
  4. Joey Adams的问题What is better for prototyping: a statically-typed language, or a dynamically-typed one?
  5. 可能有助于回答“F#和Clojure之间最重要的区别是什么?”。但请注意,“静态打字”和“动态打字”之间的争论是一个长期存在的争论,所以看起来很虔诚。

答案 5 :(得分:2)

F#真的对应于JVM上的Scala。在.NET平台上最接近Clojure的是IronScheme。

答案 6 :(得分:2)

如果您需要宏,可以将其与BooNemerle一起使用。