[Haskell-cafe] What's this algebraic structure called?