[Haskell-beginners] basic Functor, Applicative and Monad instances