27

Haskellの関数型リアクティブプログラミングの世界を調べ始めたばかりです。リアクティブな設定でGUIプログラミング(実質的なバインディングのためにgtkを使用)を試してみたいと思います。

今、私はグレープフルーツ、リアクティブバナナ、バスターを少し見てきましたが、いずれかのパッケージを使用することの喜び/恐怖の証をお願いします。

私が持っているのは、これらの予備的な意見だけです。

  • 抽象化されたバックエンドのアイデア(Grapefruitが持っている)については曖昧な感じがあるので、FRPパッケージをgtkにバインドすることを気にしないでください。

  • 型理論は興味深いと思いますが、実際のプログラムの単純なエンコーディングも重視しています。これにより、grapfruit-recordsが少しずれているようです。

つまり、もちろんあなたの何人かが私に他のことを考えるように説得しない限り:-)

4

2 に答える 2

19

通常の FRP を使用したいだけで、GUI フレームワークの近くにとどまり、「事前に作成された」抽象化を使用するのではなく、reactive-banana が最も実行可能なオプションであると私は考えています。これは、既存のフレームワークへのバインドを明示的に対象としており、「現実世界」での使用 (問題を引き起こす可能性のある実験的、意味論的なことは何も行わない) などのために設計されています。

イベントベースのフレームワークを react-banana にバインドする方法については、reactive-banana-wx を参照してくださいとても簡単です。Gtk2Hs への簡単なバインドを一度書きましたが (残念ながら現在はコードが失われています)、ファイルは 50 行を超えませんでした。これは、reactive-banana-wx コードをほぼ直接音訳したものです。

Busterは 2009 年以降更新されておらず、GHC 7 でビルドされていないという単純な理由から、Buster を使用しないことをお勧めします。

他の「プロダクション指向」の FRP フレームワークは、sodium (reactive-banana に似ていますが、動的なイベント スイッチング( reactive-banana に間もなく登場しますが、まだ実装されていません) と、同時実行のための「パーティション」の概念を備えています) です。ただし、それは出てきたばかりで、まだ採用されていません) とネットワイヤー(矢印の付いた FRP、反応性バナナやナトリウムとはまったく異なる生き物)。

于 2012-04-03T20:44:59.417 に答える
12

私は自分自身で FRP を試してきましたが、これまでのところ、うまくいったのは Reactive-Banana だけです。グレープフルーツや他のほとんどのものは古く、更新またはサポートされる可能性がまったくないように思われたため、調べたことはありません。私はネットワイヤーについて簡単に調べましたが、率直に言って、そこに含まれるすべての矢の理論が私を先延ばしにし、単純なことでさえどうすればよいかを理解するのに多くの苦労をしました。

対照的に、私は Reactive-Banana で書かれた SDL へのバインディングのかなり良いセットを得ることができましたが、途中でいくつかの問題がありました。Reactive-Banana を支持するもう 1 つの点は、Heinreich がコミュニティで非常に活発であり、問​​題が発生したときに役立つ回答を提供してくれることです。ここにあるさまざまなリアクティブ バナナの質問に目を通すだけで、彼がそれらのかなりの数に回答していることがわかります。また、Haskell メーリング リストでの FRP の議論に通常非常に積極的に参加しています。

于 2012-04-03T20:49:20.210 に答える