関数型プログラミングと型システムのメンタルモデル
https://speakerdeck.com/naoya/guan-shu-xing-puroguramingutoxing-sisutemunomentarumoderu
伊藤直也さん Qiita Conference 2023 Autumn
#YAPC::Hiroshima_2024 で再演(別のスライドあるかも)
集合である型で設計し、関数で状態を遷移 (slide=71)
メンタルモデル(捉え方)の更新
関数
状態遷移
IO -> 状態遷移 -> IO
=オニオンアーキテクチャ
状態遷移がビジネスロジック
ビジネスロジックに色々なパラダイムを適用できる可能性が生まれている(ref: slide=34)
型
集合
型の構造化
和(OR)
構造が異なるものを組合せられる(slide=53)
Making illegal states unpresentable (slide=55)
仕様上ありえない状態は表現しない、かつ、コンパイラがそれを理解
(4.2 Union型で見た!)
値の組合せパターンが少なく、厳密(slide=58)
IMO:書くコードは多いけれど、シンプルになっている印象
パターンマッチで分解
slide=61 TypeScriptの例(リテラルで区別)
https://www.youtube.com/watch?v=AITr2lKSu24