Where are the functional gui users?
已经有很多关于在函数语言中创建gui的方法的研究。有推拉式玻璃钢,箭头式玻璃钢和其他可能的优势研究图书馆。许多人似乎同意这是一种更为本土化的方式,但几乎所有人似乎都在使用命令式绑定库,如gtk2hs和wxhaskell。即使是被推荐为优秀教程的地方,也会教授如何绑定这些简单的命令式库。为什么guis不基于frp研究?
从我之前的回答开始,几乎一年过去了,功能反应式编程(FRP)的世界发生了变化。
特别是,我创建了反应性香蕉,一个哈斯克尔的玻璃钢小图书馆。虽然仍然缺少一些特性,但它已经是以纯粹的功能风格实现GUI的一种很好的方法,如一组示例所示。这里是截图:
和以前一样,还有flapjax,一个在Web浏览器中用于frp的javascript库。
虽然每个人都同意功能反应式编程(FRP)是实现图形用户界面的方法,但是在Haskell中还没有一个完整的库可以实现这一点。我认为主要原因是:
- 平衡表达能力和资源使用是困难的(空间泄漏、时间问题)。你的玻璃钢模型表达得越多,就越难在保证效率的同时实现它。设计空间仍在探索中。
- API便利。FRP非常适合实现
Time -> MouseInput -> Picture 形式的功能,但是GTK+或Cocoa等GUI平台并不是这样工作的,问题是如何用FRP方式表达后者,而不会比传统方式复杂。
换句话说,玻璃钢的研究还没有完成。
也就是说,一些实际的实现已经存在,例如flapjax,一种编译为javascript的语言。
在任何情况下,没有人能阻止你实现你自己为某个特定目的而定制的FRP库,并从中获得巨大的利润。卢克·帕默做得很成功,我现在也在尝试。(我宁愿浪费时间与玻璃钢,而不是与可变变量。)
旧线,我知道,但榆树(elm-lang.org)正在迅速成为"现实世界"玻璃钢的中心。它编译成JavaScript,并在其中编写ELM网站。