[Haskell-beginners] Algebraic types, shared parameters, pattern matching