什么是最生产级别的Haskell到JavaScript编译器,编写在浏览器中运行的代码
What is the most production-level Haskell to JavaScript compiler, to write code running in the browser?
我不是在寻找一个有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网络框架,所以他们可能知道自己在谈论什么)
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 如何使用手机浏览器上的按钮拨打USSD代码
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- 检查浏览器'在asp.net的后端代码中启用或禁用了s JS
- 如何修复在浏览器中打开后出现在屏幕上的html/Javascript代码
- 使用现有代码更改基于浏览器宽度的图像url
- 如何在jQuery.CSS()方法中为所有浏览器编写CSS代码
- 无法使用firefox在浏览器中运行此代码
- 安卓版本的代码不像桌面互联网浏览器那样工作
- 链接适用于所有浏览器,除了 safari(php 代码)
- 根据浏览器屏幕大小和媒体查询执行 php 代码
- 使用Safari浏览器调试Firebreath代码
- 为什么浏览器上的后退按钮会破坏此代码?它的作用与此相反
- 是否可以向用户发送javascript代码's浏览器安全
- 浏览器中未运行Javascript代码
- 这个AngularJs代码有什么问题-在浏览器代码编辑器- Nodejs中
- 使用webpack,我可以把Node.js和浏览器代码放在同一个文件中,但防止Node.js代码进入浏览器吗?
- 代理连接到XML跨服务器.使用Ajax可以在某些浏览器上工作,而不是其他浏览器?代码包括在内
- node.js和浏览器代码重用:将常量导入模块