是否有一种函数式语言可以为Java社区提供F#为.NET社区所做的工作?
JVM可用或正在开发哪些函数式编程语言?
Scala将成为语言.
虽然不是严格的功能(它是功能和面向对象的混合)并且它并不严格用于Java(存在.NET版本的Scala),这将是JVM中与F#最接近的模拟.
我想到的第一件事是Scala,但实际上Ocaml-Java更接近,因为F#是Ocaml的变体.请参阅此文章,将Ocaml-Java与Scala进行比较:
OCaml程序员的工作效率通常是Java或C++程序员的10倍,可用于各种实际任务.尽管F#基于一个基本的OOP平台,但F#在很大程度上捕获了OCaml(以及整个ML系列)提高生产力的好处.相比之下,Scala无法捕获许多好处,包括一些非常基本的好处,因此,在Scala中编写正确的代码比在任何真正的ML中要困难得多.
此外,ML系列语言设计简洁,但Scala对于"Hello world!"中的所有内容都是不必要的冗长.向上.ML系列语言提供了广泛的类型推断(OCaml比大多数语言更多),但Scala只通过比较进行了初步的推断.OCaml有一个非常具有表现力的类型系统,但Scala对OOP几乎没有什么实际意义.
也许是Clojure.它不是静态类型的,但它比F#更强调不变性和并发性.但是,与F#(和Common Lisp不同)一样,它的目的是成为一种主要功能语言,擅长从底层平台消费OO库.