Types 有静态类型的函数式语言吗?
我来自静态类型的背景,研究函数式编程,但我对动态类型并不完全感兴趣。我很好奇有什么样的选择Types 有静态类型的函数式语言吗?,types,programming-languages,functional-programming,static-typing,Types,Programming Languages,Functional Programming,Static Typing,我来自静态类型的背景,研究函数式编程,但我对动态类型并不完全感兴趣。我很好奇有什么样的选择 一个开始的答案是:ActionScript3是静态类型的,提供了一些功能范例,尽管AS3程序并不经常使用它们。haskell突然想到(尽管它的类型系统可能是最先进的),ML语言家族,F#AFAIK 有很多。哈斯克尔、奥卡姆和F#浮现在我的脑海里。如果你是一名Windows开发人员,F#非常好,并且得到了Microsoft的良好支持(以及一个非常强大的StackOverflow社区)。Lisp族语言(Com
一个开始的答案是:ActionScript3是静态类型的,提供了一些功能范例,尽管AS3程序并不经常使用它们。haskell突然想到(尽管它的类型系统可能是最先进的),ML语言家族,F#AFAIK 有很多。哈斯克尔、奥卡姆和F#浮现在我的脑海里。如果你是一名Windows开发人员,F#非常好,并且得到了Microsoft的良好支持(以及一个非常强大的StackOverflow社区)。Lisp族语言(Common Lisp、Scheme、Clojure)是动态函数式语言的示例
ActionScript3有可选的静态类型。另一方面,Haskell、OCaml和F#编译器使用类型推断来确定推断类型。当您第一次看到用OCaml编写的代码时,由于没有显式类型,它看起来像是动态类型语言的杂乱无章,具有静态类型的类型安全性。我的观点是,动态语言的可选静态类型(一个好主意)最终将被类型推理所取代,10年后静态与动态的争论将是毫无意义的。类型理论首次应用于函数式编程(类型化lambda演算),比任何命令式语言早得多
对于最高级的静态类型系统(您在命令式世界中找不到任何可比的系统),请查看并查看。如果您熟悉Java生态系统,在编译为Java源代码时,非常类似Haskell的语言可能值得一看。我对您这样的人的最佳推荐(大概是静态类型、OO、命令式背景)是。Scala是命令式功能的混合体,与Java和其他大多数语言相比,它对OO的支持更好。Scala编译为JVM字节码(.net也受支持,但使用较少)提供了非Java JVM语言无法比拟的Java互操作性。我在年使用Scala,并发现编写Scala代码非常有趣和令人满意。学习Scala的最佳资源是语言设计师自己编写的
如果你不想要一种混合语言,而是更愿意直接加入FP的竞争,我会选择Haskell。Haskell是一种纯粹的函数式语言;没有(一流的)易变性或效果的概念。我最喜欢的Haskell资源是witty。事实上,无论你是否打算加入Haskell,我都强烈建议你阅读一些LYAH,因为这是一篇关于静态类型FP世界的精彩介绍。我甚至在考虑语言选择之前就开始阅读它。一些静态类型语言具有一流词法闭包和保证尾部调用消除的AGE:
- (1978-1997)
- (1983-1986)
- (1985-1995)
- (1996年至今)
- (1990-2010)
- (2005年至今)
- (1999年至今)
- (2008年至今)