功能 gui 用户在哪里?

Posted

技术标签:

【中文标题】功能 gui 用户在哪里?【英文标题】:Where are the functional gui users? 【发布时间】:2011-03-29 19:31:31 【问题描述】:

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

【问题讨论】:

说 frp GUI 优于命令式 GUI 不会让你很喜欢。不过很有趣的问题。 Is functional GUI programming possible?的可能重复 ***.com/questions/1028250/…的可能重复 @Don 这不是第二个的骗子,因为我不会在不知道含义的情况下问这个问题,而不是第一个,因为我实际上已经在问题中链接到了。 【参考方案1】:

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

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

也就是说,玻璃钢研究还没有完成。

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

在任何情况下,没有人可以阻止您实施为特定目的量身定制的 FRP 库并从中获得巨大收益。 Luke Palmer 已经成功地做到了,我目前也在尝试。 (我宁愿把时间浪费在 FRP 上,也不愿浪费在可变变量上。)

【讨论】:

JFYI,Flapjax 可以并且应该用作库,计划弃用带有编译器的单独语言。【参考方案2】:

自我上一个回答以来已经过去了将近一年,函数式反应式编程 (FRP) 的世界发生了变化。

特别是,我创建了reactive-banana,这是一个在 Haskell 中用于 FRP 的小型库。虽然仍然缺少一些功能,但它已经是一种以纯功能样式实现 GUI 的好方法,正如 collection of examples 所展示的那样。这是一个屏幕截图:

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

【讨论】:

另外,Ur/Web 的用于编写编译为 AJAX 的客户端的信号模型受到 FRP 的启发 - 但它并不是真正的 FRP。【参考方案3】:

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

【讨论】:

以上是关于功能 gui 用户在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

GUI(图形用户界面)

SQL Server Management Studio 图表 gui 组件

结对编程-基于JAVA的GUI程序

GUI 即人机交互图形化用户界面设计

GUI( 图形用户界面)

图形用户界面GUI