結論:

以下は、とりとめのないメモ。




Haskellは設計(具体的にはデータ型や引数の型など)が不味いと物凄いコードが書きにくい。
そして、あとから設計を修正するのは結構なコストがかかる(勿論、「あとから修正しやすいような設計にする」事もある程度は可能だろうが……とりあえず今の自分にはそれは出来なかった)。
つまり、最初の段階から、可能な限り完璧な設計を行う必要がある。
しかしその為には、設計する対象を熟知している必要があるだろう。
Haskellは、「コードを書いたり修正しながら、徐々により良いアルゴリズムを模索する」言語ではないよなあ、
どっちかって言うと、「やりたい事の本質を頭の中でじっくりと考えてから、おもむろにそれを清書する」言語だよなあ、
……等と思いつつも、本質的でない仕様から本質的でないコードを書き、クソゲーを完成させた。


確かに、「完成したHaskellのコード」は非常に簡潔で分かりやすい。
この点では全く他の言語の追随を許さない。単にHaddockで型等を出力しただけでも、充分にリファレンスとして機能する程だ。
しかし、その「完成したHaskellのコード」を完成させるまでの過程の補助機能が、プログラミング言語としてのHaskellには、ちょっと欠けてる気がする。


自分の脳味噌は昔と比べて確実に能力が衰えている訳で、その衰えた脳味噌だけでコードを書く事には、かなり前から限界を感じていた。
要するに、エディタや(プログラミング)言語等の、有能な補助ツール無しでは、もう自分には、ある程度の水準を満たしたコードは書けない気がしている。
というか、「考える」能力自体が歳と共に明らかに老化している事を実感している。メモを取らなくては物事を憶えていられないし、言葉にせずに物を考える事が苦手になってきた。
(その割には、歳と共に、言葉の正しさに気を遣わなくなってきた一面もあるが……。)


まあ、そんな事はどうでもよく。
とにかく、Haskellでコードを書いていると、どうにも、その「コード書く前にもっと考えろや」という目に見えない圧力を感じてしまった。
これが、「書きながら、どういう構造がベストなのかを模索する」スタイルに慣れてしまった自分には、かなりつらかった。