m a: means a type which take a parameter (another type).
For example,
data Maybe a = Nothing | Just a
- The m is for "Maybe"
- The a is for "a"
For example: (>>=) (Just 3) (\ x -> Just (show x))
should returns: Just "3". (>>=) Nothing (\x -> Just (show x))
better written Nothing >>= (\x -> Just (show x))
should returns: Nothing