Haskell: Flaw in the description of applicative functor laws in the hackage Control.Applicative article?: it says Applicative determines Functor

Any type in Haskell can have at most one instance of Functor, so your guess is not correct: For no type t (whether or not it's an instance of Applicative) can there exist two different implementations of instance (Functor t). See: http://article.gmane.org/gmane.comp.lang.haskell.libraries/15384


It is a property of the type a -> a that there are only two inhabitants of it, namely id :: a -> a (defined as id x = x) and bottom :: a -> a defined as bottom = error "Infinite loop.".

If we restrict ourselves to only the first case as "reasonable", we come to an important mathematical theorem, which is that there is at most one function fmap of type forall a. forall b. (a -> b) -> f a -> f b satisfying fmap id = id and fmap f . fmap g = fmap (f . g).

If we do not, then you are correct, we have one case where fmap = undefined and the other where fmap = (<*>) . pure. But that's a little cheesy.