HaskellのGUIライブラリに関する提案[終了]


14

以下のようハスケルウィキ自身が述べています

Haskellには多くのGUIライブラリがあります。残念ながら、標準的なものはなく、すべてが多かれ少なかれ不完全です。一般に、低レベルのベニヤは順調ですが、低レベルです。高レベルの抽象化は非常に実験的です。サポートされている中レベルのGUIライブラリが必要です。

私の大学の教授は、私と他の3つのコンピューターサイエンス専攻にHaskellのGUIライブラリを検討するように依頼しました。このプロジェクトに対する彼の最初のアイデアは、Smalltalkにあるモーフィックライブラリを模倣したOpenGLの上にレイヤーを書くことでした。ただし、これは単なる提案であり、他のシステムは間違いなく検討する価値があります。

これは、実際の複数の部分からなる質問につながります。

  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を模倣します。これらは素晴らしいです。
アント

回答:


7

Haskellで使用するエレガントでシンプルなライブラリが見たいです。残りは、この目的に役立つ技術的な詳細であり、再定義するものではありません。したがって、私の0.02ドル。

Qt、GTK、FLTKなどの既存のツールキットをベースにしないでください。これはあなたをひどく制限し、おそらく利益よりもはるかに苦痛を与えます。PyQtは、非常に面白くて、十分に工夫されており、PythonとC ++はどちらも非常に柔軟な命令型オブジェクト指向言語です。Haskellの場合、物事はもっと粗いものになると思います。

最も基本的なグラフィックプリミティブのみ依存し、その上に構築します。OpenGLは便利ですが、もっとシンプルなもの(2Dのみ、たとえばSDL)でもうまくいきます。これにより最大限の柔軟性最大限の移植性が得られます。Smalltalk / Morphic、Java / Swing、TCL / Tkを参照してください。

概念的に小さくします。GUIはそのままでは難しく、登るのに別のエベレストを追加する必要はありません。Haskellは、物をコンパクトでモジュール化するのに役立つことを願っています。

ボーナスポイントについては、スキン変更可能にします。最低限、システムカラー(およびシステムカラーのみ)を適用してコントロールのレパートリー全体をペイントする方法を知ってください。これにより、このツールキットで構築されたアプリが目障りにならないようにできます。最大で、Win32 / Gtk / Qt / Cocoaが完全にネイティブに見えるようにコントロールを描画する方法を知ってください。基本的なスキナビリティはシンプルで論理的です。完全なネイティブルックを実現するのは非常に困難です。

また、rootless実行し、ウィンドウ管理を基になるグラフィックシステム(X、Windows など)に任せてください。そうしないと、ユーザーの健全性に挑戦し、採用を大幅に妨げます。

いつものように、「シンプルなものをシンプルで複雑なものにする」+「すべてが可能であるが関心のないものはチューリングターピットを避ける」+「可能な限りシンプルでシンプルではない」

名前は最も重要ではありません。人気のあるすべてのGUIツールキットのうち、Qtだけがなんとなく賢い名前を持っています。いくつかの人気のあるプロジェクトは、飛行中であっても名前を変更しました(Firefox、Firebird以外)。名前を付けてください。名前を付けます。

幸運を!


1

関係するすべての学生と話をして、この質問に興味を持たせるのに十分な時間を与えた後、私は元の投稿のいくつかの重要な質問について合意に達したと思います。

ライブラリはどのレベルの抽象化のために努力すべきですか?Haskell Wikiは、中レベルのGUIライブラリが推奨されることを強く示しているようです。ただし、高レベルのライブラリは引き続き歓迎されます。

Haskell Wikiの提案に従って、中レベルのライブラリを目指すことにしました。

ライブラリを何に構築する必要がありますか?(例:OpenGL)

その人気とサポートのために、OpenGLを選択しました。GLUTまたはGLFW Haskellラッパープロジェクトをベースとして使用します。

私たちのライブラリーを模倣したい既存のGUIライブラリー(もしあれば)とその理由は何ですか?(例:PyGame、Morphic、Swingなど)

Morphicを選択したのは、MorphicとPyGameの間でかなりの議論があったためです。QTとGTKの両方には、すでに1つ以上のHaskellライブラリプロジェクトが活発に開発されているため、考慮しませんでした。

この架空の図書館にどんな名前を付けますか?(例:HOT-Haskell Opengl Toolkit; HAWT-Haskell Advanced Windowing Toolkit)

これはまだ議論の余地があります。HAWTを考慮しないことを決定し、代わりに以下を検討しています。

  • HOT-Haskell Openglツールキット
  • HOG-Haskell Opengl Graphics(プロジェクトをHOGで強化しましょう!)
  • シェーン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.