是否有一种功能齐全的范式语言可以转换为 JavaScript?

Is there a fully functional paradigm language that transpiles to JavaScript?

是否有一种语言可以转换为 JavaScript(如 TypeScript、CoffeScript 等)并且几乎是纯函数式的(如 Haskell、Erlang、F#)?

我知道有一些库可以帮助保持不变性 (Underscore),并且 ES6 中有很多很酷的数组函数和 lambda。但是我正在寻找的是一个函数式的语法和转译器,所以我可以毫不费力地编写函数式 JavaScript。

查看 Scala.js, Elm or PureScript

其他语言包括 ClojureScript (Clojure) and Funscript (F#)

其中,我只真正使用过 Scala.js 和 Elm,我认为它们都非常好用。

柯里化

在 Elm 和 PureScript 中,函数默认是柯里化的。 在 Scala 中,通过使用多个参数列表可以很容易地完成柯里化:

def curried(param1: Int)(param2: Int): Int = ...

如果您希望继续使用 .NET 平台,并且希望使用 F# 作为您的语言来转换为 JavaScript,那么我建议您查看以下内容:

1.) Fable - Fable 结合了 F# 编译器和 Babel 的强大功能,使 JavaScript 成为 F# 的真正后端。它直接在 F# 源代码上运行,无需编译。

2.) WebSharper - 一个完全不同的网络框架 用于开发功能性和反应性 .NET 应用程序

如果您喜欢 F#,您可能会喜欢 OCaml js_of_ocaml (better OCaml compatibility) or BuckleScript (better JS interop) or even Reason ML (more modern syntax, including JSX)。

如果你更喜欢 Haskell,你可以使用 GHCJS (it's Haskell, targeting JS), Purescript (strict evaluation means simpler JS), or Elm(无论如何需要输入 类)。

我不太确定 Erlang。似乎有一些针对 JS 的尝试(可能有些成功),但我对其中任何一个都不熟悉。