对Haskell中的GUI库的建议[关闭]


14

正如Haskell Wiki本身所言

Haskell有大量的GUI库。不幸的是,没有标准的标准,而所有标准或多或少都是不完整的。通常,低级别的贴面进展顺利,但级别较低。高级抽象是实验性的。需要受支持的中级GUI库。

我学院的一位教授要求我和其他三个计算机科学专业的学生考虑为Haskell开发GUI库。他对该项目的最初想法是在OpenGL之上编写一个层,该层模仿Smalltalk中形态库。但是,这只是一个建议,其他系统绝对值得考虑。

这将我们带到一个实际的,包含多个部分的问题。

  1. 我们的图书馆应该争取什么抽象水平?Haskell Wiki似乎强烈表明将首选中级GUI库。但是,仍然欢迎使用高级图书馆。
  2. 我们的图书馆应基于什么建造?(例如OpenGL)
  3. 您希望看到什么现有的GUI库模仿我们的库(如果有),为什么?(例如PyGame,Morphic,Swing等)
  4. 您希望我们的库实现或避免哪些功能?例如,Gnome的好人可能会认为“最小化”按钮是不必要的。
  5. 您有什么一般性建议吗?
  6. 您会给这个假想库一个聪明的名字吗?(例如HOT-Haskell Opengl Toolkit; HAWT-Haskell Advanced Windowing Toolkit)

2
模仿Qt或GTK,这些都很棒
Anto

您是否已经看过haskell.org/haskellwiki/Reactive
SK-logic

Answers:


7

我希望看到一个优雅且易于与Haskell一起使用的库。剩下的是应该用于此目的的技术细节,而不是重新定义。因此,我的$ 0.02。

不要以现有的工具包(例如Qt或GTK或FLTK或...)为基础-这将严重限制您,并且可能给您带来的痛苦远大于利润。PyQt足够好,很有趣,也很人为,Python和C ++都是非常灵活的命令式OO语言。我想对于Haskell来说,情况会更加艰难。

仅依赖于最基本的图形基元,然后在此基础上进行构建。OpenGL很不错,但是即使是更简单的东西(仅2D,例如SDL)也可以很好地实现。这将为您提供最大的灵活性最大的可移植性。请参阅Smalltalk / Morphic,Java / Swing,TCL / Tk。

使它在概念上变小。GUI非常困难,无需添加另一个Everest即可攀登。我希望Haskell可以使事情变得紧凑和模块化。

为了获得奖励积分,使其具有皮肤。至少要知道如何应用系统颜色(和仅系统颜色)来绘制整个控件库,以使使用此工具包构建的应用程序不会让人眼花ore乱。最大限度地了解如何使Win32 / Gtk / Qt / Cocoa绘制控件,使它们看起来完全是本机的。基本的可换肤性简单且合乎逻辑;要获得完整的本地外观非常困难。

另外,请运行无根目录,并将窗口管理留给基础图形系统 -X,Windows等。不这样做将挑战用户的理智并严重阻碍采用。

像往常一样,“使简单的事情变得简单而复杂的事情成为可能” +“避免图灵tarpit那里一切皆有可能,但没有什么有趣的事情变得简单” +“使尽可能简单而不是简单”。

名称是最不重要的。在所有流行的GUI工具包中,只有Qt拥有一个聪明的名字。许多受欢迎的项目甚至在飞行中都更改了名称(Firefox,néeFirebird)。有东西要命名,您会命名。

祝好运!


1

在所有参与的学生中进行讨论并给予足够的时间引起这个问题的兴趣之后,我相信我们已经对我原始帖子中的几个关键问题达成了共识。

我们的图书馆应该争取什么抽象水平?Haskell Wiki似乎强烈表明将首选中级GUI库。但是,仍然欢迎使用高级图书馆。

我们决定根据Haskell Wiki的建议建立一个中等级别的库。

我们的图书馆应基于什么建造?(例如OpenGL)

我们选择OpenGL是因为它的受欢迎程度和支持。我们将使用GLUT或GLFW Haskell包装器项目作为基础。

您希望看到什么现有的GUI库模仿我们的库(如果有),为什么?(例如PyGame,Morphic,Swing等)

经过与PyGame的大量辩论之后,我们选择了Morphic。我们没有考虑QT或GTK,因为它们都已经在积极地开发一个或多个Haskell库项目

您会给这个假想库一个聪明的名字吗?(例如HOT-Haskell Opengl Toolkit; HAWT-Haskell Advanced Windowing Toolkit)

这仍有待辩论。我们已经决定不考虑HAWT,而是在研究:

  • 热门-Haskell Opengl工具包
  • HOG-Haskell Opengl Graphics(使您的项目具有HOG功能!)
  • 舍恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.