Some say it is about advanced type system features.
Example 4. Higher-order polymorphism with rank-n data types
data Monad m = M { forall a. a -> m a forall a b. m a -> (a -> m b) -> m b }