Calculating the type of `pure (.)`

Viewed 102

Source: Hutton, Graham. "Programming in Haskell" (p. 210)

In addition to providing the functions pure and <*>, applicative functors are also required to satisfy four equational laws:


  1. x <*> (y <*> z) = (pure (.) <*> x <*> y) <*> z

I calculated this type pure (.) :: f ((b -> c) -> (a -> b) -> (a -> c))

However, that doesn't seem correct. Could someone explain why?

0 Answers
Related