Fof*_*Fof 0 haskell types unification ghci
我正在尝试手动派生类型(foldr(.))
foldr :: (a1 -> b1 -> b1) -> b1 -> [a1] -> b1
(.) ::(b2 -> c2) -> (a2 -> b2) -> a2 -> c2
然后:
a1 ~ (b2 -> c2)
b1 ~ (a2 -> b2)
b1 ~ a2
所以我明白了 (foldr (.)) :: (a2 -> b2) -> [(b2 -> c2)] -> (a2 -> b2)
但GHCi回归: :t (foldr (.)) :: (a -> b) -> [b -> b] -> a -> b
为什么b2和c2是一样的?
谢谢,
塞巴斯蒂安.
如果你看的类型(.)如
(b2 -> c2) -> (a2 -> b2) -> (a2 -> c2)
然后
b1 ~ (a2 -> b2)
b1 ~ (a2 -> c2)
所以 (b2 ~ c2)
然后就可以看到该类型的(foldr (.))是
(a2 -> b2) -> [(b2 -> b2)] -> (a2 -> b2)
这是GHC派生的类型.