[erlang-questions] join/2 function

Matthias Lang <>
Sun Dec 17 09:39:36 CET 2006


Hoan Ton-That writes:

 > I think that the following function join should
 > be included in the lists module.
 > 
 > join(Sep, List) ->
 >   lists:foldl(fun(A, "") -> A; (A, Acc) -> Acc ++ Sep ++ A end, "", List).

Your implementation of join is quadratic in the length of the list.

Here's one O(N) way to do it:

  lcjoin(Sep, [H|T]) ->
      Joined = [ [Sep|X] || X <- T ],
      lists:flatten([H|Joined]).

In many cases the lists:flatten/1 call is unnecessary.

Matthias



More information about the erlang-questions mailing list