
14 Dec
2010
14 Dec
'10
8:09 p.m.
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 *