【问题标题】:Is there a fully functional paradigm language that transpiles to JavaScript?是否有一种功能齐全的范式语言可以转换为 JavaScript?
【发布时间】:2016-04-25 11:26:43
【问题描述】:

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

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

【问题讨论】:

标签: javascript functional-programming transpiler


【解决方案1】:

查看Scala.jsElmPureScript

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

其中,我只真正使用过 Scala.js 和 Elm,在我看来这两个都非常好。

柯里化

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

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

【讨论】:

  • 你能用它们轻松地管道和咖喱函数吗?
  • 榆树看起来很棒!有没有办法实现类似 Haskell 的模式匹配?我可以使用语法糖将列表分解为头部和尾部吗?
  • 是的! :) 查看这份备忘单:gist.github.com/yang-wei/4f563fbf81ff843e8b1e
  • 虽然,如果你想要一些非常接近 Haskell 的东西,Purescript 可能是更好的选择,但我还没有真正尝试过。 :)
【解决方案2】:

如果你喜欢 F#,你可能会通过 js_of_ocaml(更好的 OCaml 兼容性)或 BuckleScript(更好的 JS 互操作)甚至 Reason ML(更现代的语法,包括 JSX)来喜欢 OCaml。

如果您更喜欢 Haskell,可以使用 GHCJS(它是 Haskell,针对 JS)、Purescript(严格评估意味着更简单的 JS)或 Elm(无论如何都需要类型类)。

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 我试过 websharper 但我不是很喜欢我会检查寓言
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2021-03-10
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 2021-12-27
    • 2018-02-15
    相关资源
    最近更新 更多