Erlang does have problems

Scott Lystig Fritchie <>
Thu Aug 31 05:01:39 CEST 2006


>>>>> "bi" == Bob Ippolito <> writes:

bi> I'm also not terribly convinced that lists are better for
bi> concatenation, because adding data to the end of a list requires a
bi> lot of copying and that's the most common operation in my
bi> experience.

Oh?  At last check, "X = [A, B]" executed in O(1) time regardless of
the sizes of A & B.  As far as I/O lists are concerned,
[<<"fo">>, [[], $o], [[[<<"ba">>]], <<"r">>]] yields the same effect as
<<"foobar">>.

If whatever library you're working can only tolerate "flat" lists(*),
then you're limited to O(length(A)) concatenation (lists:append/2, A
++ B, etc).

Richard O'Keefe's contributions to the "Strings (was: Re: are Mnesia
tables immutable?)" thread on this mailing list(**) are quite
informative and, IMO, should be mandatory reading for "strings"
people.

-Scott

(*) 1> lists:flatten([<<"fo">>, [[], $o], [[[<<"ba">>]], <<"r">>]]).
    [<<"fo">>, 111, <<"ba">>, <<"r">>]

(**) That thread took place (roughly) between 27 June and 06 July,
2006.



More information about the erlang-questions mailing list