で関数 `foldr`の種類について困惑している、foldrの定義は次のとおりです。私は著書「Haskellではプログラミング」ではハスケル
foldr :: (a -> b ->b) -> b -> [a] -> b
foldr f v [] = v
foldr f v (x:xs) = f x (foldr f v xs)
私は非常によくf
を理解することはできません。
原因f
が[a]
に適用され、引数a
が(a -> b -> b)
に明らかです。 引数v
はb
型を持つが、最後にb
( - > B - >B)及び( - > B - > B) - > B - > [A] - >B奇妙です。
機能f
とfoldr
の結果がb
のタイプの結果であることを意味しますか?どのようにそれが可能になることができますか?
私は「どのように可能なのでしょうか」という答えを書き始めました。質問の一部ですが、ちょっと立ち往生しました。なぜあなたはそれが不可能だと思うと言うことができますか?それは説明を導くのに役立つと私は思う。 –