[Haskell-cafe] How to make this data type work?