什么是最生产级别的Haskell到JavaScript编译器,编写在浏览器中运行的代码

What is the most production-level Haskell to JavaScript compiler, to write code running in the browser?

本文关键字:浏览器 代码 运行 编译器 什么 Haskell JavaScript      更新时间:2023-09-26

我不是在寻找一个有10年业绩记录的超级健壮的解决方案,而是寻找一个可以在实际应用程序中使用的解决方案。

我更喜欢在服务器上运行编译器,这样我就可以提前编译Haskell代码。当然,解决方案不仅仅需要一个编译器,还需要使Haskell代码能够访问浏览器上可用的API(DOM、XHR…)。

脚注:到目前为止,我看到的项目似乎没有得到积极维护,或者超出了运行"Hello world"的能力,或者在某些情况下甚至超出了项目描述

这里有一个更完整的列表:

http://www.haskell.org/haskellwiki/The_JavaScript_Problem

还有Fay(尽管它只是haskell的一个子集)

https://github.com/faylang/fay

您可能会发现此列表非常有用:https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS

来自列表:

* UHC (Utrecht Haskell Compiler) backend converts UHC core to JavaScript, allowing the compiling of Haskell code to JS.
* YHC (York Haskell Compiler) backend, as above but with YHC core language.
* jshaskell

我知道它不是Haskell,但Coffee的剧本是基于表达的,相当优雅的IMHO。

我偶然发现了这个名为ghcjs 的项目

看起来很有希望!

引用README:

Haskell到Javascript的翻译器

项目旨在为提供解决方案

  • 将现代Haskell库编译为Javascript文件并使用它们在Ajax应用程序中或
  • 用Haskell语言开发整个Ajax应用程序

该项目的早期版本位于vir.mskhug.ru。

虽然GHCJS似乎没有得到积极维护,但Emscripten似乎是最新的。

  • Emscripten将LLVM位代码编译为JavaScript
  • GHC的LLVM后端似乎正在积极开发中
  • 直观地说,为了回答这个问题,以下管道可能离"生产质量"不远:Haskell词法(->GHC->)LLVM词法(->Emscripten->)JavaScript词法

我承认这是一个推测性的帖子。

这种语言,Roy,也许不是真正的Haskell(?),但看起来非常相似:

http://roy.brianmckenna.org/

罗伊似乎还活着;GitHub回购中有许多分叉:https://github.com/pufuwozu/roy
它似乎还活着:https://github.com/pufuwozu/roy/graphs


如果你使用的是Play Framework 2.0,那么有一个插件,Ray,可以在Play Framework 2.0:上运行Roy

http://brianmckenna.org/blog/ray
https://github.com/pufuwozu/ray

上一次提交是在四个月前,考虑到Play Framework 2可能在四五个月前发布,这已经是很久以前的事了。

Yesod有一份"最具生产水平"的候选人名单:https://github.com/yesodweb/yesod/wiki/Javascript-Options(Yesod是一个非常流行的Haskell网络框架,所以他们可能知道自己在谈论什么)