不変なものを切り出す
不変である構造や性質を見つけ出して、それに依存させるというのを繰り返す営み
不変である構造が、複数の要素から帰納的に見つけられる時、それを抽象と呼んだりする
普遍な構造とも言える?
これの繰り返しで実装していけば、基本的には「その構造が不変でなかった」ということがない限りは修正は容易に行えるはず(?)
プログラムを書くうえで、まずすべき作業は不変である構造はどれかを探す
まず、というかずっと
普遍である性質を探す
具体的なアプローチに依存しないような性質
どういうアプローチを採用するにしても守られる性質
その声質は今後変わる可能性がかなり低いというもの
普遍な性質をinterfaceにする
普遍な性質で関数を切る
普遍な性質を値にする
具体的なアプローチ、こういうのに影響しない
Item → Atom → Item
Item → Atom → Item | null
1つのAtomを取ろうとする、取れないこともある
Item → Atom → Item[]
1つのAtomを確実に取る
足りなければ、Itemを追加するので返り値が配列になる