[erlang-questions] list:join() for erlang?
David King
dking@REDACTED
Wed Sep 12 19:51:25 CEST 2007
> i'm guessing they mean join in the scripting language sense which
> is more for creating CSV type strings.
> ie (fictional function):
> "I,Like,Erlang" = lists:join(["I","Like","Erlang"],",")
> so join/2 would be something like (newbie alert, just started
> learning erlang, so excuse the (possibly) bad code):
> join([First|Rest],JoinWith) ->
> lists:flatten( [First] ++ [ JoinWith ++ X || X <- Rest] ).
> calling join(["A","B","C"],"+")
> would result in "A+B+C"
(Same learning-warning as above) List concatenations involve building
new lists, which involves copying the old ones.
A better idea is probably to build one that returns an iolist (since
if you're building a string, you're probably using it for io anyway),
like this:
join([ Head | [] ], _Sep) ->
[Head];
join([ Head | Rest], Sep) ->
[Head,Sep | join(Rest,Sep) ].
util:join(["I","Like","Erlang"],"_") = ["I","_","Like","_","Erlang"].
You can always use lists:flatten/1 or erlang:iolist_to_binary/1 if
you need it flattened
That could maybe be optimised further to be tail-recursive using an
accumulator, but it doesn't involve building an entire list for every
entry
>
>
> On 9/12/07, igwan < igwan@REDACTED> wrote:It does exist :
>
> erlang:'++'/2
>
> and the corresponding syntactic sugar :
>
> 1> [a,b,c] ++ [d,e,f].
> [a,b,c,d,e,f]
>
>
> -igwan
>
> Peter K Chan a écrit :
> > I looked around and I couldn't find a list:join() implementation for
> > erlang. Is this intentional? The join function seems to be a useful
> > feature to have.
> >
> > I ended up writing my own version, which was simple enough; but
> it would
> > be even better if it is available as a BIF.
> >
> > Peter
> > _______________________________________________
> > erlang-questions mailing list
> > erlang-questions@REDACTED
> > http://www.erlang.org/mailman/listinfo/erlang-questions
> >
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
More information about the erlang-questions
mailing list