[erlang-questions] Intersection of two ordered sets

Nicholas Dronen <>
Sun May 10 19:33:04 CEST 2009


Hi:

Does this look like a sane implementation for finding the intersection
of two ordered sets?  There are implementations in the standard erlang
libraries (e.g. ordsets.erl), but they're a bit different and I wanted
to make sure I'm not doing anything wildly wrong, either in terms of
correctness or performance.  (I'm not reinventing the wheel here --
just trying to learn erlang by implementing whatever comes to mind.)

    intersection(L1, L2) -> intersection(L1, L2, []).

    intersection([H1|T1], [H2|T2], Result) when H1 == H2 ->
        intersection(T1, T2, [H1|Result]);
    intersection([H1|T1], [H2|T2], Result) when H1 > H2 ->
        intersection([H1|T1], T2, Result);
    intersection([H1|T1], [H2|T2], Result) when H1 < H2 ->
        intersection(T1, [H2|T2], Result);
    intersection(_, _, Result) -> lists:reverse(Result).

Regards,

Nick



More information about the erlang-questions mailing list