[Haskell-beginners] Type unions

Russ Abbott russ.abbott at gmail.com
Tue Dec 14 21:09:05 CET 2010


Is there a way to get this to work?

 data A = Aconstructor Int
data B = Bconstructor Int
data AorB = A | B

f :: Int -> AorB
f x
  | even x     = Aconstructor x
  | otherwise = Bconstructor x

 I get this diagnostic.

Couldn't match expected type `AorB' against inferred type `A'


Since AorB is A or B, why is this not permitted?

If instead I write

data AorB = Aconstructor Int | Bconstructor Int


everything works out ok. But what if I want separate types for A and B?

Thanks,
*
-- Russ *
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20101214/03c2b600/attachment.htm>


More information about the Beginners mailing list