少し初心者の Haskell の質問ですが、Haskell のチュートリアルの例でこの例に出くわしました。「リストの最後の要素を見つける」には、次のようないくつかの明白なバージョンがあります
last' [x] = x
last' (_:xs) = last' xs
しかし、提示された代替バージョンを理解できません:
myLast' = foldr1 (const id)
したがって、id 関数のアプリケーションが何をしているかを理解しようとして、ghci で試しました。
const id 1 2 -> gives 2
これは次のようにバインドします。
(const id) 1 2 -> gives 2
そして、このようではありません:
const (id 1) 2 -> gives 1
しかし、私はこれを理解していません。(const id)
のようなものに変換する必要があります
`(\x y->x) (\x->x)`
これは、最初の要素の ID を返すだけの関数を返すべきではありませんか? または、関数の順序付け (const id) は、const とはどのように異なる動作をしますか?