Nosotros también tenemos duda en este ejercicio, cómo es que se deduce que el tipo de map' es igual al de map?
Entendemos que map :: (a -> b) -> [a] -> [b]
para que map' sea del mismo tipo, el tipo de zip (repeat f) debería ser [a] ya que map (uncurry ($)) tiene el primer parametro ( (a -> b) ) saturado, o sea map (uncurry ($)) :: [a] -> [b] pero zip :: [a] -> [b] -> [(a,b)] y repeat :: a -> [a]
y no sabemos como seguir, o sea como vemos que zip le este retornando al map la lista [ a] que esta esperando el map (uncurry ($)) ?
Espero se entienda, gracias!