On Thu, May 3, 2012 at 5:36 PM, Ismael Figueroa Palet <[email protected]>wrote:
> Hi, I'm writing a program like this: > > data B = B Int > data A = Safe Int | Unsafe Int > > createB :: A -> B > createB (Safe i) = B i > createB (Unsafe i) = error "This is not allowed" > > Unfortunately, the situation when createB is called with an Unsafe value > is only checked at runtime. > If I omit the second case, it is not an error to not be exhaustive :-( > It is a warning at least, if you use the appropriate -W flag, or -Wall. You can combine it with -Werror to make it a compile-time error to omit cases in a pattern match (and other warnings.) I'm not quite sure what your intention with the A data type is. createB could also have the signature A -> Maybe B, so the caller might check the outcome instead of having the entire program crash. Cheers, Aleks
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
