FRP (関数型リアクティブ プログラミング)のリアクティブバナナhaskell ライブラリに興味があります。リアクティブバナナの背後にある理論を理解するために、初心者に何を読むことをお勧めしますか? 私が理解しているように、この分野ではある程度の進歩があり、さまざまな FRP ライブラリがさまざまなアプローチを使用しているため、どの FRP 論文でも対応できるとは思いません。
6 に答える
残念ながら、私は包括的なドキュメントやチュートリアルをまだ書いていません。これは主に、reactive-banana ライブラリがまだ流動的であるためです。
これは、現時点では、かなり強力な Haskell の知識に裏打ちされた、さまざまな情報源から自分で物事を把握する必要があることを意味します。ここで私にできることは、さまざまな情報源とインスピレーションを列挙することです。
Reactive-banana で直接利用できるドキュメント
- 非常に短い紹介— 主に「reactve-banana を理解するために Applicative Functor について知る必要があるのはなぜですか?」という質問への回答です。
- チュートリアル スライド [PDF] — 動作とイベントの概念を説明し、視覚化します
- API リファレンス
- サンプル コード— サンプルは単純なものから始まり、ライブラリを理解するのに非常に役立ちます。
- モデルの実装— ソース コードを見てください。プログラミング モデルの詳細を理解するのに役立ちます。
反応バナナはコナル・エリオットの作品に基づいているので、彼の著作は良い情報源です
- "Functional Reactive Animation" — FRP の一般的ですが、やや時代遅れの概要です。
- 「宣言型イベント指向プログラミング」 — GUI プログラミングでの FRP の有用性を示す実践的な例。一般的なプログラミング哲学への優れた入門書。
- 「プッシュプル関数型リアクティブ プログラミング」 — アプリカティブおよびその他のファンクターの観点から、モデルが API にどのようにマッピングされるかを理解するのに役立ちます。
基本的に 2 つのソースがあります。
- Conal Elliott の論文 " Simply Efficient Functional Reactivity " (およびこの論文につながる Conal の他の研究)。
- アプフェルムスのブログ。記事「反応バナナとFRPの本質」はおそらく良い出発点です.
Reactive-banana の設計とセマンティクスは、Conal の論文と彼の「リアクティブ」ライブラリ (reactive-banana-0.2 以降) から大きく影響を受けています。この背後にある多くの理由やライブラリ間の相違点についての議論は、Apfelmus のブログのコメントにあります。残念ながら、「リアクティブ」には「スイッチャー」機能に関連するいくつかの悪い動作があるため、リアクティブ バナナから除外されました。この問題の性質とその解決方法について多くの研究が行われており、reactive-banana-0.5では何らかのバージョンの「スイッチャー」が導入される可能性があるようです。
リアクティブバナナではありませんが、このシリーズは FRP を理解し、小さなポンゲームをゼロから構築するのに役立ちました。
https://github.com/leonidas/codeblog/blob/master/2012/2012-01-08-streams-coroutines.md https://github.com/leonidas/codeblog/blob/master/2012/2012-01 -17-declarative-game-logic-afrp.md
FRP と反応バナナについてブログを書いています。ここを見て、それが役立つかどうかを確認してください。
http://alfredodinapoli.wordpress.com/2011/12/24/functional-reactive-programming-kick-starter-guide/
HTH、
A.
最近、'streamed' パッケージを 'reactive-banana' に移植しました。このパッケージは、伴奏、音楽ゲーム、およびいくつかの楽しい効果を生成するためなど、MIDI メッセージのリアルタイム処理を目的としています。
http://code.haskell.org/~thielema/reactive-balsa/
どのようにして反応バナナを学び始めましたか? パッケージの作成者に尋ねたところ、最初のステップを実行するのを親切に手伝ってくれました。最初のステップを踏んだ後、パッケージの Haddock ドキュメントが非常に役立つことがわかりました。これで、パッケージの作成者と私のどちらかを選択して、reactive-banana を開始する方法に関する最初のヒントを提供できます。:-)