[Haskell-cafe] selectively allow alternatives in a sum type