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