对于在函数式语言中创建guis的方法进行了大量研究。有推/拉frp库,基于箭头的frp以及可能还有其他优秀的研究。 Many people似乎同意这是更原生的方式,但几乎每个人似乎都在使用命令式绑定库,如gtk2hs和wxhaskell。即使推荐为good tutorials的地方也会教导这些普通命令库的绑定。为什么不是基于FRP研究的guis?
答案 0 :(得分:26)
自从我之前的回答已经过去了近一年,并且功能反应式编程(FRP)的世界发生了变化。
特别是,我创建了reactive-banana,一个用于Haskell中FRP的小型库。虽然仍然缺少某些功能,但它已经是一种以纯粹功能的方式实现GUI的好方法,如collection of examples所示。这是一个截图:
和以前一样,在网络浏览器中还有Flapjax,一个用于FRP的JavaScript库。
答案 1 :(得分:23)
虽然每个人都同意功能反应式编程(FRP)是实现图形用户界面的方法,但是还没有出现在Haskell中这样做的全面的库。我认为主要原因是:
Time -> MouseInput -> Picture
形式的函数,但是像GTK +或Cocoa这样的GUI平台不能像那样工作,问题是如何用FRP风格表达后者而不会比传统更复杂风格。换句话说,FRP研究尚未完成。
话虽如此,已经存在一些实际的实现,例如Flapjax,一种编译为JavaScript的语言。
在任何情况下,没有人可以阻止您实施为特定目的量身定制的自己的FRP库,并从中获益匪浅。 Luke Palmer已成功完成,我目前正在尝试这样做。 (我宁愿把时间浪费在FRP上,而不是浪费我的时间。)
答案 2 :(得分:7)
旧线程,我知道,但是榆树(elm-lang.org)正在迅速成为真实世界的中心" FRP。它编译成JavaScript,并在其中编写Elm网站。