モチベーション
Evan Czaplicki「脱FRP。またはThe Elm ArchitectureからSignalを消した件」 - 以下斜め読んだ内容 を読んで、関数型のおもちゃから、かなり実用指向な舵取りをしているようにみえ、現時点でどれぐらい使い物になるか試してみよう、という気になった。
いつもの言語(JS)から距離があるので、徳が積めそう。
前提: 定期的にハローワールド程度はどう書くのか、ということは調べていたので、まったくの初見ではない。
読んだ資料
- http://guide.elm-lang.org/ 基本的な概念
- http://www.elm-tutorial.org/en/ ユースケースごとの例
- https://qiita.com/tags/elm 実際どういうコードが書かれているかの雰囲気を見ていた
guide~ は適当に読み飛ばした部分が多いので、詰まったらまた読み返す。elm-tutorial よさそうと思っただけで、まだやってない。
注意点として、0.16より前のコードはあんまり動かない。
副読
- Evan Czaplicki「脱FRP。またはThe Elm ArchitectureからSignalを消した件」 - 以下斜め読んだ内容 http://vwxyz.hateblo.jp/entry/2016/06/05/234137
- farewell-to-frp http://elm-lang.org/blog/farewell-to-frp
Install
3つある
npm install elm -g
cabal install elm
- http://elm-lang.org/install からバイナリを落とす
cabal でいれたやつは消しにくいので、nodeがあれば elm, そうでなければ
あるとよい知識
- Haskell
- 全体的にサブセットぽさ + 正格評価 + UI構築に特化したDSLぽさ
- Haskellだと思って触るとHaskellじゃなくて苛々するし、全く新しい言語だと思うとHaskellのお約束だから察しろ、で説明省かれるし、すごいH本の9章ぐらいまで読んでおくと良い。
- Redux
- evancz曰く「Reduxにあんな形で丸パクリされたのは痛恨のミス」ということらしいが、この知識があると Html.App.program がまんま Redux だということがわかる。
- Rx.Observable
- subscriptions で扱うものがそれっぽい
- 0.16以前はSignalでもっと抽象化されていたらしい
- 仮想DOM
- elm-lang/html パッケージ は https://github.com/Matt-Esch/virtual-dom がベース
- 純粋関数型仮想と仮想DOMの相性は最高、とのこと http://qiita.com/Kinokkory/items/0e10588ccc7b11224d3d
- 体感的にも設計面でそうなると言いたいことわかるけど、現実的にパフォーマンスチューニングで純粋関数邪魔そうという予感もある。どっちに転ぶかなー
コマンド
- elm-make: ビルドコマンド
- elm-reactor: 動的にビルドしてくれる開発用サーバー
次に調べること
- JSとのインターフェースの持ち方
- パッケージの作り方
- ライフゲーム書いてみる
明日やるかも