
26 Sep
2005
26 Sep
'05
10:41 a.m.
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 -> []