功能gui用户在哪里?

对功能语言创建guis的方法进行了大量的研究。 有推拉/拉式库,基于箭头的frp库以及其他优秀的研究。 很多人似乎都认为这是更原始的方式,但几乎每个人似乎都在使用命令式绑定库,如gtk2hs和wxhaskell。 甚至连建议作为优秀教程的地方都会教导对这些简单命令式库的绑定。 为什么不根据玻璃钢研究guis?


自从我之前的回答已经过去了将近一年了,功能反应式编程(FRP)领域的事情已经发生了变化。

  • 特别是,我在Haskell创建了一个用于FRP的小型图书馆 - reactive banana。 虽然仍然缺少一些功能,但它已经成为以纯功能实现GUI的一种好方法,正如一系列示例所证明的那样。 这里有一个截图: 在这里输入图像描述

  • 和以前一样,Flapjax也是Web浏览器中用于FRP的JavaScript库。


  • 虽然每个人都认为功能性响应式编程(FRP)是实现图形用户界面的方式,但Haskell中尚未出现完善的库。 我认为主要原因是:

  • 平衡表现力VS资源使用是困难的(空间泄漏,时间问题)。 您的FRP模型越具有表现力,在保证效率的同时实施它越困难。 设计空间仍在探索之中。
  • API方便。 FRP非常适合实现Time -> MouseInput -> Picture形式的函数,但像GTK +或Cocoa这样的GUI平台不能像这样工作,问题是如何以FRP风格表达后者而不会变得更复杂传统的风格。
  • 换句话说,玻璃钢研究尚未完成。

    话虽如此,一些实际的实现已经存在,例如Flapjax,一种编译为JavaScript的语言。

    无论如何,没有人可以阻止你实现为特定目的量身定做的自己的FRP库,并从中获益匪浅。 卢克帕尔默成功地做到了,我目前也在尝试。 (我宁愿浪费自己的时间,也不愿意使用可变变量。)


    我知道老线程,但Elm(elm-lang.org)正在迅速成为“现实世界”玻璃钢的中心。 它编译为JavaScript,并在其中编写Elm网站。

    链接地址: http://www.djcxy.com/p/47713.html

    上一篇: Where are the functional gui users?

    下一篇: The difference between Reactive and Functional