使う用語はテキトウで思いつき任せです。
そもそもこの「hogeFunc x y」という書き方自体、あたしはイライラしているんだ。
カッコで括るとかしないと見分けつかなくないのか。なんなんだ。
なーんでhogeFunc(x y)って書かないんだろう。Shiftキー押すの嫌だから?

これは毎日イライライしている問題の中でもとりわけ大きなテーマで、面倒くさいのか何なのかしらないが、なぜ関数名も仮引数も、一緒くたに並べて視認性を下げてるんだろう設計者は阿呆なのだろうかと思っているわけ。

書いてるうちに氷解し始めてはいるんだけど、そういうモヤモヤも今後のために書く。

Prelude> let hogeFunc x y = x + y
Prelude> hogeFunc 2 3
5

うん。

Prelude> let subHoge = hogeFunc 2
Prelude> subHoge 1
3
Prelude> subHoge 4
6

これを知ったときは驚いた。「hogeFunc x y」のxまで代入済の関数を返すのね。「すごいHaskell」を電車で読んでて、このくだりを目にした時、驚いたあまりヘンな声でて恥ずかしかった。

Prelude> :t hogeFunc
hogeFunc :: Num a => a -> a -> a
Prelude> :t subHoge
subHoge :: Integer -> Integer

はー。

で、よくわかってないのは相変わらずだけど、もしかするとHaskellさんというのは、右隣りにいる誰かにしか興味を持ってなくて、右隣りと何かをしたあと、まだ右隣に何かがいる場合、「ああ、いたの」とばかりに何かをするといったような人なのかしらと思い始めているわけです。
むろん加減乗除の優先順みたいなところで、常に右を一個ずつ食っていくわけじゃないよとは思うんですけど、

x:xs

にしろ、

Prelude> let subHoge = hogeFunc 2

にしろ、先頭(左端)の何かにしか興味を持っていないといった佇まいに見えるわけです。

で、

hogeFunc x y

コレにおけるhogeFunc氏はyさんなんぞ知らんの体であって、興味の対象はxさんだけなんであると読みますと、
hogeFunc xの結果の何か(機能的にはsubHoge)が初めてyを認識し、subHoge yを評価すると。結果、hogeFunc x y全体の評価が終わって、xとyの和が得られてよかったねという流れなんでないか。
あたくしの理解のためのこじつけですが、つまり、つまり、

((hogeFunc x) y)

という感じ?なんじゃこりゃw
まあそのなんだ、カッコあっても意味ないからカッコ書いてないんだよということなのか。hogeFunc氏にとって、yさんは興味の範囲の外にいる人だから。
こう読むとなんとなく読める気がしてくる。勘違いだった場合に突き進んで、あとで勘違いをとくハメになるのも痛いなあ。
「こういうかんじなのかもしれん」
くらいで読み進めていこうか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です