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

时间:2011-06-07 22:13:19

标签: javascript haskell code-translation

我不是在寻找具有10年历史记录的必然超级强大的解决方案,而是寻找可以在真实应用程序中使用的东西,而不仅仅是能够运行Hello World示例。

我的偏好是在服务器上运行编译器,所以我可以提前编译Haskell代码。当然,解决方案需要的不仅仅是编译器,并且允许Haskell代码访问浏览器上可用的API(DOM,XHR ......)。

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

6 个答案:

答案 0 :(得分:16)

这里有一个更完整的清单:

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

并且还有Fay(虽然它只是haskell的一个子集)

https://github.com/faylang/fay

答案 1 :(得分:9)

您可能会发现此列表有用: 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脚本是基于表达式而且相当优雅的恕我直言。

答案 2 :(得分:8)

我偶然发现了这个名为ghcjs

的项目

看起来很有希望!

来自README

的引用
  

Haskell到Javascript翻译器

     

项目旨在为

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

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

答案 3 :(得分:8)

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

  • Emscripten将LLVM bitcode编译为JavaScript。
  • GHC's LLVM backend似乎正在积极发展。
  • 直观地说,为了回答这个问题,以下管道可能与“生产质量”相差不远:Haskell lexemes( - &gt; GHC - &gt;)LLVM lexemes( - &gt; Emscripten - &gt;)JavaScript lexemes

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

答案 4 :(得分:2)

这种语言, 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可能在4或5个月前发布。

答案 5 :(得分:0)

有一个来自Yesod的“大多数生产级别”候选人列表:https://github.com/yesodweb/yesod/wiki/Javascript-Options(Yesod是一个非常受欢迎的Haskell webframework,所以他们可能知道他们在说什么)