功能gui用户在哪里?

时间:2010-08-14 10:20:02

标签: user-interface haskell frp

对于在函数式语言中创建guis的方法进行了大量研究。有推/拉frp库,基于箭头的frp以及可能还有其他优秀的研究。 Many people似乎同意这是更原生的方式,但几乎每个人似乎都在使用命令式绑定库,如gtk2hs和wxhaskell。即使推荐为good tutorials的地方也会教导这些普通命令库的绑定。为什么不是基于FRP研究的guis?

3 个答案:

答案 0 :(得分:26)

自从我之前的回答已经过去了近一年,并且功能反应式编程(FRP)的世界发生了变化。

  • 特别是,我创建了reactive-banana,一个用于Haskell中FRP的小型库。虽然仍然缺少某些功能,但它已经是一种以纯粹功能的方式实现GUI的好方法,如collection of examples所示。这是一个截图: enter image description here

  • 和以前一样,在网络浏览器中还有Flapjax,一个用于FRP的JavaScript库。

答案 1 :(得分:23)

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

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

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

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

在任何情况下,没有人可以阻止您实施为特定目的量身定制的自己的FRP库,并从中获益匪浅。 Luke Palmer已成功完成,我目前正在尝试这样做。 (我宁愿把时间浪费在FRP上,而不是浪费我的时间。)

答案 2 :(得分:7)

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