是否有一种功能齐全的范式语言可以转换为 JavaScript?
Posted
技术标签:
【中文标题】是否有一种功能齐全的范式语言可以转换为 JavaScript?【英文标题】:Is there a fully functional paradigm language that transpiles to JavaScript? 【发布时间】:2016-04-25 11:26:43 【问题描述】:是否有一种语言可以转换为 javascript(如 TypeScript、CoffeScript 等)并且几乎是纯函数式的(如 Haskell、Erlang、F#)?
我知道有一些库可以帮助保持不变性(下划线),并且 ES6 中有很多很酷的数组函数和 lambda。但我正在寻找的是一个类似函数式的语法和转译器,所以我可以毫不费力地编写函数式 JavaScript。
【问题讨论】:
wiki.haskell.org/The_JavaScript_Problem 是一个非常详尽的列表。 Haskell 本身转译为 JS!查看github.com/ghcjs/ghcjs 【参考方案1】:查看Scala.js、Elm 或PureScript。
其他语言包括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 但我不是很喜欢我会检查寓言以上是关于是否有一种功能齐全的范式语言可以转换为 JavaScript?的主要内容,如果未能解决你的问题,请参考以下文章
有一种方法可以在 python 中将字符串转换为 unicode 字符串?