e
forallпотому что у линзы
forall p. Strong p => ...распиши линзу и увидишь, что
p живет не в области всего типаSize: a a a
e
forallforall p. Strong p => ...p живет не в области всего типаp
forallforall p. Strong p => ...p живет не в области всего типаp
bar :: ( forall p. Functor p => p Int ) -> Int
bar x = 10
baz :: ( forall p. Functor p => p Int ) -> Int
baz = bar
p
e
p
e
p
p
p
ЗП
ЗП
p
ЗП
p
p
The compiler needs some help in some situations involving rank N types. This help can come in the form of eta expanding functions (which causes the type checker to check the function correctness in a slightly different way) or adding more type annotations. I suspect you might need to do the latter in this case.
p
forallforall p. Strong p => ...p живет не в области всего типа