[erlang-questions] Circular list

yoursurrogategod <>
Mon Aug 25 02:29:39 CEST 2008


Doing the below is pretty inefficient, as Programming Erlang by Joe
Armstrong pg. 64 mentions.

List ++ [Foo],

I'm curious why doing this doesn't work at all.

4> L3 = [L2|"F"].
[["B","C","D","E"],70]

I'm not too keen on how lists work, so this is puzzling to me :) .

On Aug 22, 9:34 am, "Colm Dougan" <> wrote:
> Hi,
>
> If I have a list of a fixed size (say 10,000 elements).  What is the
> most efficient way to add a new item to the list and force out the old
> first element.  By most efficient I mostly mean without having to copy
> the entire list each time, if that is even possible.
>
> I'm currently doing a double reverse trick, e.g. :
>
> Eshell V5.6.3  (abort with ^G)
> 1> L1 = ["A", "B", "C", "D", "E"].
> ["A","B","C","D","E"]
> 2> [_ | L2] = L1.
> ["A","B","C","D","E"]
> 3> lists:reverse(["F" | lists:reverse(L2)]).
> ["B","C","D","E","F"]
>
> Is there a more efficient way?  I tried a benchmark and the reverse
> seems more costly than I expected.
>
> Colm
> _______________________________________________
> erlang-questions mailing list
> ://www.erlang.org/mailman/listinfo/erlang-questions



More information about the erlang-questions mailing list