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:
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
___
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
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