[Haskell-cafe] Pattern matching error

2007-12-06 Thread georg86
Hello! I need to write a function which should is supposed to merge multiple entries with the same key (out of a sorted key-value-list) into one single entry. However, I keep getting a pattern matching error. (For example, for input [('b',[5]),('b',[4]),('b',[1]),('b',[6])]: Program error:

Re: [Haskell-cafe] Pattern matching error

2007-12-06 Thread Brent Yorgey
kmerge ((x,[y]):[]) = [(x,[y])] Matching on [y] like this will only match lists with a single element (and bind y to that element). You probably just want to say kmerge ((x,y):[]) = [(x,y)] etc., which will bind y to the entire list. -Brent ___

Re: [Haskell-cafe] Pattern matching error

2007-12-06 Thread Philip Weaver
If you add a third pattern, you can see exactly what it's failing to match: kmerge x = error (show x) In order to do this, you just need to add Show constraints for a and b in the type of kmerge: kmerge :: (Show a, Show b, Eq a) = [(a,[b])]-[(a,[b])] You'll find that the pattern that

Re: [Haskell-cafe] Pattern matching error

2007-12-06 Thread Ketil Malde
Philip Weaver [EMAIL PROTECTED] writes: You'll find that the pattern that it's failing to match is: [('b',[5,4]),('b',[1]),('b',[6])] You could also use ghc with -Wall, which will tell you exactly which cases you've omitted. -k -- If I haven't seen further, it is by standing in the