Vorschläge für eine GUI-Bibliothek in Haskell [geschlossen]

14

Wie das Haskell-Wiki selbst sagt :

Es gibt eine große Anzahl von GUI-Bibliotheken für Haskell. Leider gibt es keinen Standard und alle sind mehr oder weniger unvollständig. Im Allgemeinen laufen Furniere mit niedrigem Furnieranteil gut, aber mit niedrigem Furnieranteil. Übergeordnete Abstraktionen sind ziemlich experimentell. Es wird eine unterstützte GUI-Bibliothek auf mittlerer Ebene benötigt.

Ein Professor an meinem College hat mich und drei andere Informatik-Majors gebeten, an einer GUI-Bibliothek für Haskell zu arbeiten. Seine ursprüngliche Idee für das Projekt war es, eine Ebene auf OpenGL zu schreiben, die die in Smalltalk gefundene morphische Bibliothek imitiert . Dies ist jedoch nur ein Vorschlag, und andere Systeme sind auf jeden Fall eine Überlegung wert.

Dies bringt uns zur eigentlichen, mehrteiligen Frage.

  1. Nach welcher Abstraktionsebene sollte unsere Bibliothek streben? Das Haskell-Wiki scheint stark darauf hinzudeuten, dass eine GUI-Bibliothek auf mittlerer Ebene bevorzugt würde. Eine hochrangige Bibliothek wäre jedoch weiterhin willkommen.
  2. Worauf sollte unsere Bibliothek aufbauen? (ZB OpenGL)
  3. Welche vorhandene GUI-Bibliothek möchten Sie sehen, wenn unsere Bibliothek imitiert wird (falls vorhanden) und warum? (ZB PyGame, Morphic, Swing usw.)
  4. Welche Funktionen möchten Sie in unserer Bibliothek implementieren oder vermeiden? Zum Beispiel könnten die guten Leute bei Gnome argumentieren, dass die Minimierungsschaltfläche unnötig ist.
  5. Haben Sie allgemeine Vorschläge?
  6. Welchen klugen Namen würden Sie dieser imaginären Bibliothek geben? (ZB HOT - Haskell Opengl Toolkit; HAWT - Haskell Advanced Windowing Toolkit)
Bface
quelle
2
Mimic Qt oder GTK, das sind wunderbare
Anto
Haben Sie schon haskell.org/haskellwiki/Reactive gesehen ?
SK-logic

Antworten:

7

Ich würde gerne eine Bibliothek sehen, die elegant und einfach mit Haskell zu benutzen ist. Der Rest sind technische Details, die diesem Zweck dienen und ihn nicht neu definieren sollen. Also meine 0,02 $.

Verwenden Sie kein vorhandenes Toolkit wie Qt oder GTK oder FLTK oder ... - dies wird Sie stark einschränken und Ihnen wahrscheinlich mehr Schmerzen bereiten als Gewinn. PyQt ist, ähm, witzig und erfunden genug, und sowohl Python als auch C ++ sind äußerst flexible imperative OO-Sprachen. Im Fall von Haskell wären die Dinge vermutlich viel rauer.

Verlassen Sie sich nur auf die grundlegendsten grafischen Grundelemente und bauen Sie darauf auf. OpenGL ist nett, aber auch etwas Einfacheres (nur 2D, z. B. SDL) wäre gut. Dies gibt Ihnen maximale Flexibilität und maximale Portabilität. Siehe Smalltalk / Morphic, Java / Swing, TCL / Tk.

Mach es konzeptionell klein. GUIs sind so schwierig wie sie sind. Sie müssen keinen weiteren Everest hinzufügen, um zu klettern. Ich hoffe, Haskell kann helfen, das Ding kompakt und modular zu machen.

Wenn Sie Bonuspunkte erhalten möchten, können Sie diese häuten. Sie sollten zumindest wissen, wie Sie Systemfarben (und nur Systemfarben) anwenden, um Ihr gesamtes Repertoire an Steuerelementen zu zeichnen, sodass eine mit diesem Toolkit erstellte App kein Dorn im Auge ist. Sie sollten wissen, wie Sie Win32 / Gtk / Qt / Cocoa dazu bringen, Ihre Steuerelemente so zu zeichnen, dass sie vollständig nativ aussehen. Grundlegende Skinnability ist einfach und logisch; es ist ziemlich schwer, ein volles ursprüngliches Aussehen zu erreichen.

Sie bitte auch, wurzellos und verlassen Fensterverwaltung auf das darunter liegende Grafiksystem laufen - X, Windows, was auch immer. Andernfalls wird die Vernunft der Benutzer in Frage gestellt und die Akzeptanz drastisch behindert.

Wie üblich sollten Sie "einfache und komplexe Dinge möglich machen" und "die Turing-Plane meiden, in der alles möglich, aber nichts von Interesse einfach ist" und "so einfach wie möglich, aber nicht einfacher machen".

Der Name ist das unwichtigste. Von allen gängigen GUI-Toolkits hat nur Qt einen irgendwie klugen Namen. Eine Reihe populärer Projekte änderten ihren Namen, sogar im Flug (Firefox, geb. Firebird). Haben Sie etwas zu benennen, und Sie werden es benennen.

Viel Glück!

9000
quelle
1

Nachdem wir uns mit allen beteiligten Studenten unterhalten und dieser Frage genügend Zeit gegeben haben, um Interesse zu wecken, sind wir meines Erachtens zu einem Konsens über einige der Schlüsselfragen in meinem ursprünglichen Beitrag gelangt.

Nach welcher Abstraktionsebene sollte unsere Bibliothek streben? Das Haskell-Wiki scheint stark darauf hinzudeuten, dass eine GUI-Bibliothek auf mittlerer Ebene bevorzugt würde. Eine hochrangige Bibliothek wäre jedoch weiterhin willkommen.

Wir beschlossen, eine Bibliothek auf mittlerer Ebene gemäß dem Vorschlag von Haskell Wiki anzustreben.

Worauf sollte unsere Bibliothek aufbauen? (ZB OpenGL)

Wir haben OpenGL aufgrund seiner Popularität und Unterstützung gewählt. Wir werden entweder das GLUT- oder das GLFW- Haskell-Wrapper-Projekt als Basis verwenden.

Welche vorhandene GUI-Bibliothek möchten Sie sehen, wenn unsere Bibliothek imitiert wird (falls vorhanden) und warum? (ZB PyGame, Morphic, Swing usw.)

Wir haben Morphic nach langen Debatten mit PyGame ausgewählt. QT oder GTK haben wir nicht berücksichtigt, da sich in beiden bereits ein oder mehrere Haskell-Bibliotheksprojekte in der aktiven Entwicklung befinden .

Welchen klugen Namen würden Sie dieser imaginären Bibliothek geben? (ZB HOT - Haskell Opengl Toolkit; HAWT - Haskell Advanced Windowing Toolkit)

Dies steht noch zur Debatte. Wir haben uns entschieden, HAWT nicht in Betracht zu ziehen und betrachten stattdessen:

  • HOT - Haskell Opengl Toolkit
  • HOG - Haskell Opengl Graphics (Machen Sie Ihr Projekt HOG powered!)
  • Schön
Bface
quelle