> import Data.Either > type (:|:) a b = Either a b > (???) = either > > foo :: (Int :|: Bool :|: String :|: Double) -> Int > foo = > \ i -> i + 7 ??? > \ b -> if b then 1 else 0 ??? > \ s -> length s ??? > \ d -> floor d INFIX TYPE OPERATORS!!??! O_________________________________________O