我来自静态类型背景并研究函数式编程,但我对动态类型并不完全兴奋。我很好奇那里有什么样的选择。
一个开始的答案:ActionScript 3 是静态类型的,并提供了一些功能范例,尽管 AS3 程序不经常使用它们。
我来自静态类型背景并研究函数式编程,但我对动态类型并不完全兴奋。我很好奇那里有什么样的选择。
一个开始的答案:ActionScript 3 是静态类型的,并提供了一些功能范例,尽管 AS3 程序不经常使用它们。
有许多。想到 Haskell、OCaml 和 F#。如果您是 Windows 开发人员,F# 非常好,并且得到 Microsoft 的大力支持(以及非常强大的 StackOverflow 社区)。Lisp 家族语言(Common Lisp、Scheme、Clojure)是动态函数式语言的例子。
ActionScript 3 具有可选的静态类型。另一方面,Haskell、OCaml 和 F# 编译器使用类型推断来确定性地推断类型。当您第一次查看用 OCaml 编写的代码时,由于缺少显式类型,因此它具有动态类型语言的整洁外观和静态类型的类型安全性。我认为动态语言的可选静态类型(一个好主意)最终将被类型推断所取代,并且 10 年后静态与动态的争论将变得毫无意义。
我对像你这样的人(可能具有静态类型、OO、命令式背景)的最佳推荐是Scala。Scala 是一种命令式功能混合体,对 OO 的支持比 Java 和大多数其他语言更好。Scala 编译为 JVM 字节码(也支持 .net,但使用较少)并提供非 Java JVM 语言中无与伦比的 Java 互操作性。我在我的编译器 - jgo中使用了 Scala,并且发现编写 Scala 代码非常有趣和令人满意。学习 Scala 的最佳资源是Programming in Scala,由语言设计师自己编写。
如果您不想要混合语言,而是更喜欢直接加入 FP 的竞争,我会选择 Haskell。Haskell 是一种纯函数式语言;没有可变性或效果的(一流)概念。我最喜欢的 Haskell 资源是诙谐的Learn You a Haskell for Great Good!. 事实上,无论您是否打算使用 Haskell,我都强烈建议您阅读一些 LYAH,因为它是对静态类型 FP 世界的精彩介绍。我什至在考虑语言选择之前就开始阅读它。
haskell 跃入脑海(尽管它的类型系统可能是目前最先进的),ML 语言家族,F# AFAIK。
如果您熟悉 Java 生态系统,那么非常类似于 Haskell 的语言Frege可能值得一看,因为它可以编译为 Java 源代码。