const id
const id は第2引数を返します。その理由がわかりませんでした。
*Main> :t const id const id :: b -> a -> a *Main> const id 1 2 2
理由を説明した Webページをいくつか読みましたが、それでも理解できず(x_x;)。
基本に立ち返ると、次の2つを理解していなかった模様。
- 関数の適用は、すべての演算の中で最も高い優先度をもつ。
- 関数の引数に関数をとることができる。
なので、
const id 1 2
は、「関数の適用は、すべての演算の中で最も高い優先度をもつ」ので、id関数の適用(id 1)を考えるのではなく、まずconst関数の適用を考えます。この関数は引数を2つとります。なので、括弧を使うと、
(const id 1) 2
となります。「関数の引数に関数をとることができる」ことから、idは、constの(第1)引数となっています。const関数は第1引数を返すので、idを返します。なので、
(id) 2
となります。括弧を取って、
id 2
より、結果は
2
となります。