論理
- 見通しの良さ(怠惰プログラミング)
- 状態分離 + 宣言型プログラミング
- データフロー定義 + ランタイム
- TSでの実装
データフロー定義
単純な関数連鎖
ランタイム候補
- ただの関数連鎖
- 独自のObserverパターン
- Redux
- FRP
- RxJS
- Bacon.js
定期data fetchから連鎖的に更新するタイプなら、関数連鎖だけで組むことが可能 (状態を持たなくても組めるので).
stateを持つ必要があるなら、独自のObserverが一番小さいパターン
FRPはstateに対する型を用意して時系列操作とするので、結構抽象度が高い.
慣れればとても使いやすいけど、ここまで必要ない場合が多いという感触.
"速度最適化とatomic"とか考えだすと結構むずかしさがある.
tree型なら簡単だけど、DAGはやはり大変.
UIランタイム
宣言型UIライブラリ/フレームワークが処理系として動いてくれる.
Reactの場合はReactDOM.render()を毎回呼ぶことがランタイムcallに相当するのでとても楽 (Reactに閉じたアプリはあまり健全だと思えない).