是否有一种语言可以转换为 JavaScript(如 TypeScript、CoffeScript 等)并且几乎是纯函数式的(如 Haskell、Erlang、F#)?
我知道有一些库可以帮助保持不变性(下划线),并且 ES6 中有很多很酷的数组函数和 lambda。但是我正在寻找的是一个函数式的语法和转译器,所以我可以毫不费力地编写函数式 JavaScript。
是否有一种语言可以转换为 JavaScript(如 TypeScript、CoffeScript 等)并且几乎是纯函数式的(如 Haskell、Erlang、F#)?
我知道有一些库可以帮助保持不变性(下划线),并且 ES6 中有很多很酷的数组函数和 lambda。但是我正在寻找的是一个函数式的语法和转译器,所以我可以毫不费力地编写函数式 JavaScript。
其他语言包括ClojureScript (Clojure) 和Funscript (F#)
其中,我只真正使用过 Scala.js 和 Elm,在我看来这两个都非常好用。
在 Elm 和 PureScript 中,函数默认是柯里化的。在 Scala 中,通过使用多个参数列表可以很容易地完成柯里化:
def curried(param1: Int)(param2: Int): Int = ...
如果你喜欢 F#,你可能会喜欢 OCaml,通过js_of_ocaml(更好的 OCaml 兼容性)或BuckleScript(更好的 JS 互操作)甚至Reason ML(更现代的语法,包括JSX)。
如果您更喜欢 Haskell,您可以使用GHCJS(它是 Haskell,针对 JS)、Purescript(严格评估意味着更简单的 JS)或Elm(无论如何都需要类型类)。
我对 Erlang 不太确定。似乎有一些针对 JS 的尝试(可能有些成功),但我对其中任何一个都不熟悉。
如果您希望继续使用 .NET 平台,并且希望使用 F# 作为您的语言来转换为 JavaScript,那么我建议您查看以下内容:
1.) Fable - Fable 结合了 F# 编译器和 Babel 的强大功能,使 JavaScript 成为 F# 的真正后端。它直接在 F# 源代码上工作,无需编译。
2.) WebSharper - 一个完全不同的 Web 框架,用于开发功能性和反应性 .NET 应用程序