功能gui用户在哪里?

Tim*_*ews 38 user-interface haskell frp

关于在函数式语言中创建guis的方法已有很多研究.有推/拉frp库,基于箭头的frp以及可能还有其他优秀的研究.许多人似乎都认为这是更原生的方式,但几乎每个人似乎都在使用命令式绑定库,如gtk2hs和wxhaskell.即使是被推荐为优秀 教程的地方也会教授对这些简单命令式库的绑定.为什么不基于FRP研究的guis?

Hei*_*mus 26

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

  • 特别是,我创建了reactive-banana,一个用于Haskell中FRP的小型库.虽然仍然缺少某些功能,但它已经是一种以纯功能样式实现GUI的好方法,如一组示例所示.这是一个截图: 在此输入图像描述

  • 和以前一样,还有Flapjax,一个用于Web浏览器中FRP的JavaScript库.


Hei*_*mus 23

虽然每个人都同意功能反应式编程(FRP)是实现图形用户界面的方法,但是还没有出现在Haskell中这样做的全面的库.我认为主要原因是:

  • 平衡表达性VS资源使用是困难的(空间泄漏,时间问题).FRP模型越具表现力,实施它就越难,同时仍能保证效率.设计空间仍在探索中.
  • API方便.FRP非常适合实现表单的功能Time -> MouseInput -> Picture,但是像GTK +或Cocoa这样的GUI平台不能像那样工作,问题是如何用FRP风格表达后者而不会比传统风格更复杂.

换句话说,FRP研究尚未完成.

话虽这么说,已经存在一些实际的实现,例如Flapjax,一种编译成JavaScript的语言.

在任何情况下,没有人可以阻止您实施为特定目的量身定制的自己的FRP库,并从中获益.卢克帕尔默已经成功地做到了,我现在也在努力.(我宁愿浪费我的时间与FRP相比,而不是可变变量.)

  • JFYI,Flapjax可以而且应该用作库,计划不推荐使用编译器的单独语言. (2认同)

mgo*_*old 7

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