[Haskell-cafe] type trickery