Disjunctive tuples

Thomas Davie tatd2 at kent.ac.uk
Thu Feb 22 08:31:38 EST 2007


Hi,
   I have a rather late suggestion for addition to Haskell.  To  
appease those who I know think that Haskell is over-complicated  
already and should be having things removed, I'd like to suggest  
something that I think makes the language rather more consistent, and  
thus simplifies it despite adding things to it.

My suggestion is for a disjunctive tuple syntax using the | symbol.   
We might right functions as such:

fromEither :: Either a b -> (a | b)
fromEither (Left x) = (x | )
fromEither (Right x) = ( | x)

toEither :: (a | b) -> Either a b
toEither (x | ) = Left x
toEither ( | x) = Right x

makeMoreComplexDisjunction :: Int -> Bool -> Int -> Float -> (Bool |  
Int | Float)
makeMoreComplexDisjunction 1 x _ _ = (x | | )
makeMoreComplexDisjunction 2 _ x _ = ( | x | )
makeMoreComplexDisjunction 3 _ _ x = ( | | x)

Using the '|' character gives a nice obvious syntax, and does not (I  
believe) conflict with anything in the Haskell 98 definition, as '|'  
is currently reserved for guards.

Tom Davie


More information about the Haskell-prime mailing list