commercialhaskell/haskelldocumentation

content/covariance-contravariance.md: Positive/negative position, Exercise 3

Opened this issue · 1 comments

Are the types supposed to be IO () rather than () here?

newtype E1 a = E1 (a -> ())
newtype E2 a = E2 (a -> () -> ())
newtype E3 a = E3 ((a -> ()) -> ())
newtype E4 a = E4 ((a -> () -> ()) -> ())
newtype E5 a = E5 ((() -> () -> a) -> ())

-- trickier:
newtype E6 a = E6 ((() -> a -> a) -> ())
newtype E7 a = E7 ((() -> () -> a) -> a)
newtype E8 a = E8 ((() -> a -> ()) -> a)
newtype E9 a = E8 ((() -> () -> ()) -> ())

No, this was the intended type. It's meant to be irrelevant what the other type is, the focus is on a.