[Haskell-cafe] Typing problems with basic arithmetic - help!
Henning Thielemann
lemming at henning-thielemann.de
Mon Sep 26 06:41:26 EDT 2005
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 -> []
More information about the Haskell-Cafe
mailing list