Richard A. O'Keefe <>
Wed Nov 3 02:43:27 CET 2004

Vance Shipley <> was surprised that

	1> lists:keymerge(1, [{1,foo}], [{1,a},{2,b},{3,c}]).

actually does a _merge_ like its name says and returns

The thing that distinguishes a merge from other operations is that
 - unlike append, it requires and returns ordered lists
 - unlike union, its result contains ALL the elements of the inputs.

The documentation is really quite clear:

    Returns the sorted list formed by merging List1 and List2.
    The merge is performed on the Nth element of each tuple.
    Both List1 and List2 must be key-sorted prior to evaluating this function;
    otherwise the result is undefined (and probably unexpected).
>>>>When elements in the input lists compare equal, elements from List1
>>>>are picked before elements from List2.

In short, it's not a bug.

It would not be hard to write a keyunion/3 function if it proved useful.

More information about the erlang-questions mailing list