[Haskell-beginners] understanding type constructors and value constructors