既存の構造に組み替える
取り組んでいる眼の前の問題を、既存の構造に沿うように組み替える
そこに工夫の余地がある

構造を組み替える箇所までは、型を書くだけでできる
そういう構造さえ見つけることができれば、
あとは既存の知識や、
元々用意されている関数の組み合わせ
だけでロジックを組める
Jotaiとその周辺のlibrary、抜群にセンスが良いなと感じていた
これも、同じ話なんだと思う
atomというprimitiveな構造に沿うように、構造を組み替える
そうすれば、
既存のuseAtomなどの関数で自然にアクセスできるし、
atom同士はcomposabilityが高いので組み合わせも難なくできる
この話には二段階あって、
そもそも、「最強の構造を発見すること」と、
その「最強の構造に合うように、目の前の問題を組み替えること」とある
前者に関しては、先人によってかなり見つけられている
Haskellにはそういう知識が蓄積されている
FolableとかTraversableとかMonadとか
これには数学的な能力とかも要求されるだろう
これが見つけられるに越したことはないがそんな簡単な話じゃないだろう
とりあえずで取り組むべきは後者で、
そのためには、
良い構造を知っているとか、
良い構造を扱うための関数を知っているとか、
その構造を組むための方法を知っているとか、
その上で、今目の前にあるものが、それに取り組めるものだということに気づけ無いといけない
この2つを両方を満たしていると、堅牢でかつ扱いやすくなる
Haskellはこの取り組みが言語全体に行き渡っているので、その嬉しさが特に大きい
他の言語、例えばTypeScriptとかだと、特にそういうのがあまりない
せいぜい unknown[]
ぐらい?
TypeScriptでも同様の嬉しさを享受するためには、
汎用的で筋の良いInterfaceなどを発見してそれに落とし込むとか?
>@mrsekut: 全然見たこと無い構造のように思えたものを、自然に見たことのある構造になるように組み替えていく。そうすると、既存の知識や用意されている関数の組み合わせだけでロジックが組める
>@mrsekut: Jotai周辺のlibraryのセンスの良さってどうやって思いつくのだろうと思ってたけど、これに通ずるものな気がする
>眼の前にある問題hogeを、atomという基本的な構造に当てはまるようにatomWithHogeを定義する
>そうすれば、他のatomと全く同じようにuseAtomでアクセスできる