YampaでFunctional Reactiveな認知行動療法ボットを書く これはHaskell Advent Calendar その3、13日目の記事です。前日の記事はmatsubara0507さん Haskell Backpack覚え書きでした。 はじめに Functional Reactive Programming(FRP)を使うと、時間軸に沿って入出力の関係が変化するシステムの挙動を、シンボリックに記述し、組み合わせることができます。ロボット、ゲーム、GUIなどのプロラミングに便利です。Yampaは、Arrowの記法をフル活用するFRPのライブラリです。 認知行動療法(Cognitive Behaviour Therapy, CBT)は、医学的に確立された心理療法の一種です。ここでは、CBTの自己対話スキームを提供するボットを、Yampaを使って書いてみます。 目標 時間と入力
FRP(Functional Reactive Programming)というスタイルがある.入力から出力を得る(あらゆる)プログラムを関数風に表現する手法らしい.遅延ストリームは純粋関数型言語にぴったりだと感じるが,あまり流行っていないような気がする. HaskellではFRPのライブラリが複数あるそうだが,よく分からないのでボトムアップに自作してみよう.ゲームといえば入出力と内部状態の塊,楽しそうなのでCUIで動くテトリスを題材とする. 基本 FRPにはEventとBehaviorという概念がある. Eventは,時間と値の組のリストで,離散的なイベントを表す.例えば,キーが押されたというイベント,画面が更新されたというイベントなど. Behaviorは時間の関数で,連続的な値を表す.例えば,経過時間や現在のスコアなど. type Time = Double newtype Event
FRP(Functional Reactive Programming)は、リアクティブプログラミングと関数型プログラミングの性質を持つプログラミングパラダイムである。FRPは古典的FRPと矢矧のFRPに大別される。 古典的FRP 古典的(Classical)FRPは、非連続的な値の列Eventと、常に何らかの値を取るBehaviourの二種類の構造を導入したものである。 代表的な実装としてreactive-banana、euphoria、reflexなどが挙げられる。 Haskellにおいては、EventはIOを通じて非同期的に生成できる設計が多い。Eventはマップやフィルタリングができ、モノイドとして合成することもできる。なお、GenはFRPの構造を扱うのに要求されるモナドで、実装の都合上しばしば必要となる。Behaviourは現在の値を取り出せる他、HaskellならApplica
elm-lang.orgの2016.5.10のブログエントリ farewell-to-frp ElmクリエータのEvanによる最新版0.17のアナウンス 「Reactiveとか、非同期データストリームとかObservableとか、まあええけど、敷居上げすぎじゃね?」 「じゃあSignal外して」「脱FRPしとくか」(今回) 「WebAssembly来るかも?」 「じゃあサクッと移行できるようにJSとのインフェース最小にしとくか」 「いつでもどこでも脱AltJSできるように準備しとくか」 「クロスコンパイルとかはいいわ」 「OSS化しましたので皆様使って頂けたら。。。。」 「神頼み?それじゃあエコシステムはできんわ」 「フルタイムでElm開発できるとこに入っとく」(Preziにjoin) 「Chigaco大でFunctional Programmingの講義をElmで通してもらった」 htt
The Elm Architecture is a simple pattern for architecting web apps. It is the standard way to write Elm code, and with derivatives like Redux, it is becoming a popular way to write JavaScript code too! So it is having success, but we still hear questions like: How can I use websockets in The Elm Architecture? Or GraphQL? Or geolocation? Well, Elm 0.17 is out today, and it introduces subscriptions
While code written in Haskell is very declarative and mathematical, as soon as we try to create a user interface, we’ll be slapped on the cheek by a wave of IO that will turn our code procedural in no time. One of the main ideas behind this gaming (ad)venture called Keera Studios is to write more mathematical, robust games. We want these games to be easy to understand and expand, and we want them
報告が遅くなってしまいましたが、 (多分)日本初のElmの勉強会、「Tokyo Elm Programming Meetup」に参加しました! 企画していただいたWyatt, 会場を貸していただいたCasley Consultingさん、ありがとうございました! せっかくなんで軽めのネタで発表して参りました。 半ば飛び込みなところを受け付けて頂きありがとうございました! 以下が資料です。 Whom to Recommend Elm to? 一応Slideshareにも挙げましょう。 ついでに、「何かElmで作ったものないの?」と質問され、 昨年のElm Advent Calendarで作成したラブリーコミューンも意図せず紹介することになり、楽しい発表となりました。 ちょっと緊張したけど割りと受けたようで安心です。 懇親会では結構Haskellとの違いに関する話題が多かったようです。 Has
この記事は ACCESS Advent Calendar 2015 19日目の記事です。 ACCESSの @asukamirai です。 FRP(Functional reactive programming)をサーバのロジックとして使うのはどうなのだろう、ということで試しに感覚を掴むためにやってみました。 使用したFRPのライブラリは、ICFP2015に登場した論文のFRPNow。言語はHaskellです。 確認環境など stack 0.1.10.1 lts-3.18 frpnow-0.18 OS: Windows7 64bit 動機 FRPというと、なんとなくGUI的なものを扱うようなイメージが強かったのですが、その一方で、データフローでプログラミングを行うというのは、ストリーミング処理系のライブラリとも共通する部分がありそうだと思っていました。 先月行われた関数型ストリーム処理勉強会
Reactとは 設計をとりもどす Reactでやってみる Elm-HtmlとReactの対応 ReactはFRPか? ReactはFPか? FPとOOPの真の関係 まとめ 追記 Reactとは Reactは、Facebookが開発した、JSのUIフームワークもしくはライブラリです。Reactが提供する中核機能は以下です。 イミュータブルなUIビルダー Virtual DOMによる効率的更新 上記に付随するイベントハンドラ群を編成していくための方法論 React単体ではコールバックの組合せで、Fluxの一部として使用するとオブザーバーパターンで実現 効用は、再利用性と保守性・可読性向上です。特に、Reactで作成した画面部品のコンポーザビリティが高く、細粒度のUI部品利用の発展充実が期待されます。作りは通常のJSクラスライブラリであり、覚えたりすることは多くありません。 設計をとりもどす R
前編では、Elm言語の基礎とFRPのエッセンスについてコードを通じて学びます。 後編では、実際にElmを使ってアプリケーションを作る方法と、その際に重要になるアーキテクチャを学びます。 なお、執筆時点でのElmのバージョンは0.15.1です。 注意! Elmはバージョン0.17で大きな変更がありました。現在は「関数型リアクティブプログラミング」のための言語ではありません。 参考:A Farewell to FRP(さらば FRP) また、言語自体のシンタックスやライブラリのAPIも以前とは大きく変わっています。これからElmを始める方は、必ず公式ドキュメントを参照してください。 公式ガイド FRPとは何か リアクティブプログラミングの直感的な説明としてよく挙げられるのが、Excelのような表計算ソフトです。 例えば、セルの間にC1 = A1 + B1という関係があるとします。 このように宣
Sigh is a declarative functional reactive build system for the web and io.js/node.js. Sigh combines the best features of the best asset pipelines with unique features including best speed by delegating tasks to multiple processes and perfect source maps even in production builds. With sigh sub-second incremental production rebuilds are a reality, including source map support allowing you to debug
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く