派生类型(foldr(。)) [英] Deriving the type of (foldr (.))
问题描述
我试图手动派生类型(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是相同的?
谢谢, >
Sebastián。
如果您查看 然后 so 然后你就可以看到 这是GHC的类型。 b I'm trying to manually derive the type of (foldr (.)) Then: So I get that But GHCi returns: Why b2 and c2 are the same? Thanks, If you look at the type of then so then you can see the type of which is the type GHC derives. 这篇关于派生类型(foldr(。))的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
$ b (b2 - > c2) - > (a2→b2)→> (a2 - > c2)
b1〜(a2 - > b2)
b1〜(a2 - > c2)
(b2〜c2)
(foldr(。))
的类型是
(a2 - > b2) - > [(b2→b2)]→> (a2 - > b2)
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)
:t (foldr (.)) :: (a -> b) -> [b -> b] -> a -> b
Sebastián.(.)
as(b2 -> c2) -> (a2 -> b2) -> (a2 -> c2)
b1 ~ (a2 -> b2)
b1 ~ (a2 -> c2)
(b2 ~ c2)
(foldr (.))
is(a2 -> b2) -> [(b2 -> b2)] -> (a2 -> b2)