[erlang-questions] when any why to use improper lists
Dmitry Klionsky
dm.klionsky@REDACTED
Fri Jun 29 10:16:23 CEST 2018
Some numbers
1> erts_debug:flat_size([a,b]).
4
2> erts_debug:flat_size({a,b}).
3
3> erts_debug:flat_size([a|b]).
2
On 06/29/2018 03:35 AM, Dmytro Lytovchenko wrote:
> A tuple of 2 elements will take 3 words of memory minimum
> http://beam-wisdoms.clau.se/en/latest/indepth-memory-layout.html#tuple-arityval-0
> tuple1 = [ headerWord, element1, element2 ]
>
> A cons cell has no header word, so an improper list of 1 element and
> 2nd element as a tail, just 2 values stored side to side
> (same as normal list below except that only 1 cons cell is used, 2 words)
> cons1 = [ element1, element2 ]
>
> A proper list of 2 elements will take 2 cons cells, i.e. 4 words of
> memory minimum
> cons2 = [ element2, [] ]
> cons1 = [ element1, cons2 ]
> http://beam-wisdoms.clau.se/en/latest/indepth-memory-layout.html#lists-cons
>
>
> 2018-06-29 2:23 GMT+02:00 Dmitry Belyaev <be.dmitry@REDACTED
> <mailto:be.dmitry@REDACTED>>:
>
> It's a way to reduce memory footprint.
>
> Tuple of size N is roughly represented in memory as an array
> [TupleTag, N, TupleElement1, TupleElement2, ..., TupleElementN].
> Compare it to Cons cell representation: [ConsTag, HeadElement,
> TailElement] - it saves 1 word per structure.
>
> Kind regards,
> Dmitry Belyaev
>
> On Fri, Jun 29, 2018 at 9:50 AM, Karlo Kuna <kuna.prime@REDACTED
> <mailto:kuna.prime@REDACTED>> wrote:
>
> dealing with digraph module i have noticed use of improper
> lists as representations of edges:
> ['$e' | 123]
>
> is there a good reason to use improper lists instead of tuple
> for this and in general
> when is a good idea to use improper lists?? (i can't think of
> example for justified use)
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> http://erlang.org/mailman/listinfo/erlang-questions
> <http://erlang.org/mailman/listinfo/erlang-questions>
>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> http://erlang.org/mailman/listinfo/erlang-questions
> <http://erlang.org/mailman/listinfo/erlang-questions>
>
>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
--
BR,
Dmitry
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20180629/b93dfa45/attachment.htm>
More information about the erlang-questions
mailing list