On Sat, 24 Sep 2005, Marcin Tustin wrote:
> For some reason the following code is producing an error message from ghci
> that the the patterns are non-exhaustive. Does anyone have any idea why that
> could be, given that the patterns are, at least in my meaning, provably
> exhaustive?
>
> choosenonuniqueset n (a:r)
> | (length r) > (n-1) = [ (sort (a:x)) | x <- (choosenonuniqueset (n-1)
> r)]
> `union`
> [ (sort (a:x)) | x <- (choosenonuniqueset n r)]
> | (length r) == (n-1) = [a:r]
> | (length r) < (n-1) = []
You need to compare only once. Better write:
choosenonuniqueset n (a:r) =
case compare (length r) (n-1) of
GT -> ...
EQ -> [a:r]
LT -> []
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe