【问题标题】:Significant differences between F# and ClojureF# 和 Clojure 之间的显着差异
【发布时间】:2010-10-29 05:54:07
【问题描述】:

F# 和 Clojure 之间最显着的区别是什么?

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

F# 有宏吗?

【问题讨论】:

    标签: clojure f# functional-programming


    【解决方案1】:

    大部分差异源于 F# 源自 ML 而 clojure 源自 lisp

    所以 F# 有更多的 ML/OCaml/Haskell 感觉,重点是:

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

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

    • s 表达式
    • 关闭

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

    【讨论】:

    • Clojure/contrib 中有 ClojureCLR,但目前是 alpha。
    • clojure 支持一些惰性的东西,而 F# 是一种严格的语言
    • 此外,Clojure 具有出色的 STM 实现。 F# 的计算表达式(用于一元语法)和引号与宏有一点重叠。
    • F# 具有或多或少类似于 Clojure 的惰性序列。我要区分的地方是 Clojure 的内置持久数据结构和对 STM 的强调。
    • 它们都有复杂的机制来与对象类型进行交互。这些可能分别是库或 C#、Java 代码。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 而且 AFAIK 不存在可以运行 .NET 但不会运行 JVM 的平台。反过来,也有很多情况。因此,Clojure 更通用,而 F# 或多或少是 Microsoft 特定的。
      • @mad-j 好吧。 Mono 填补了 .NET 的大部分多平台空间。而且,例如,vanilla JVM 不能在 android 上运行。那么 Java 或多或少是特定于 Sun 的?
      • 几乎没有。例如在 Windows/Linux/Mac 上很常见。
      • @Joonas - iPhone 和 iPad 通过 MonoTouch 运行 .NET,但不支持 Java。这是一个相当大的洞。
      • @Justin:似乎有人正在将 Java 支持侵入 iThings,而不管 Apple 的政治决定如何:jroller.com/neugens/entry/running_pure_java_applications_on
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        1. Boumbles 对 Difference between Strong vs. Static Typing AND Weak vs. Dynamic Typing 是什么的回答;
        2. 海勒姆对Dynamically vs Statically typed languages studies的回答;或
        3. 乔伊亚当斯的问题What is better for prototyping: a statically-typed language, or a dynamically-typed one?

        可能有助于回答“F# 和 Clojure 之间最显着的区别是什么?”。但请注意,“静态类型”和“动态类型”之间的争论是一场长期争论,因此可能显得有些宗教化。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

          • “F# 真的对应 Scala”。技术上但不是政治上。 Scala 是一门学术语言,而 F# 和 Clojure 是工业语言。
          • @Jon - 不确定将 Scala 描述为一种学术语言是否公平。它有很多“实用”的特性,具有良好的 Java 平台互操作性,到目前为止,我已经看到它在大型企业(例如银行)中的使用超过了 F# 或 Clojure。
          • @mikera:好吧,在我写下这篇评论的第二年,Martin Odersky 创立了 TypeSafe,Scala 变得更像是一种工业语言。此后,Scala 在英国的就业市场份额增长了 10 倍。 itjobswatch.co.uk/jobs/uk/scala.do
          【解决方案7】:

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

          【讨论】:

            猜你喜欢
            • 2015-01-09
            • 2013-01-19
            • 2020-06-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-30
            • 2023-01-31
            • 2012-09-22
            • 2016-10-21
            相关资源
            最近更新 更多