高階関数

高階関数は型を前提としている。
型とは整数型とか文字型とかではなく、構造のほうか。
構造とはリスト・木・スタック・キュー等の事か。
文字列型、配列はリスト構造である。
そうか、従来の型はatomに該当し、構造によって高階関数が存在する。
つまり、リスト構造であるならばreduce、map等の高階関数が有用である。
つい木構造はリストで表現できるからリストの高階関数で実装しようとするが、木の専門の高階関数があるはずだ。例えば、リストのmapに該当する木構造の各要素にfを適用する高階関数などがありそうだ。
調べてみよう。rubyだとArrayってリスト構造はあるのに、Treeって木構造はあるのかな?逆にリスト構造の高階関数ライブラリであるEnumerableはあるが木構造用の高階関数ライブラリというかモジュールはないのかな?
逆に、スタックって構造だとあんまり高階関数がないのかな?
でも、スタックタイプの言語ってスタックの高階関数そのもの??
こりゃ調べてみる価値がある。

もう一つ分かったことは、関数型で思考すると良いところは副作用が無いところだけな感じ。複数のイベントをλ項に展開するところがどうしても苦しいはずだ。デバグで苦しむのか、プログラミングで苦しむのかそれが問題だ。っていうか単なるトレードオフか。

高階関数はデータ構造毎にほぼ固定で存在してるんだ。
言語なんか関係ないのか。rubyの moduleでわかれっつーの。
道具の本質が分かってなかったの俺じゃん
一番線形なのは俺の頭ってか 任意のatomというか型を 既知の構造に充てればそれでおわりか。
あ”〓 新しい構造を使ったときだけ β縮約なり、高階関数化を考えれば良いだけか。私が間違っておりました!
まあ、リスト構造なのに 配列ってデータ構造を適用してしまうと 折角ある高階関数の知恵をうしなうのか。
がっくりだ、学校で何勉強してたんだろう・・・・
「データ構造(モデル)」「高階関数」「イベント」 その3つで道具は成り立っている。既知のモデルに該当すれば 高階関数が適用可能で 手が抜ける
はー、んなこともわかってなかったのか。
型と構造の操作は分離するべきなんだな。くそー、励もう。