<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Thanks Jesper, that's most helpful to know. Is there a particular
way to print it in io:format that will *not* show the 'extra stuff'.
(I used ~p)<br>
<br>
Best,<br>
<br>
Don<br>
<br>
<div class="moz-cite-prefix">On 1/28/2019 11.01 AM, Jesper Louis
Andersen wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAGrdgiV=9EPOpHTRU1MpBxP5rw+WgDGyJdV=Gpr04JFoGfX5MA@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div class="gmail_default"
style="font-family:arial,helvetica,sans-serif">On Sat, Jan
26, 2019 at 6:29 PM Fred Youhanaie <<a
href="mailto:fly@anydata.co.uk" moz-do-not-send="true">fly@anydata.co.uk</a>>
wrote:<br>
</div>
</div>
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">That's part of the
internal structure of the array module, the data structure
is opaque and should not be relied upon.<br>
<br>
</blockquote>
</div>
<div class="gmail_quote"><br>
</div>
<div class="gmail_quote">
<div style="font-family:arial,helvetica,sans-serif"
class="gmail_default">For full reference, you can glean on
the internal structure:</div>
<div style="font-family:arial,helvetica,sans-serif"
class="gmail_default"><br>
</div>
<div style="font-family:arial,helvetica,sans-serif"
class="gmail_default">Erlang/OTP 21 [erts-10.2.1] [source]
[64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [hipe]
[dtrace]<br>
<br>
Eshell V10.2.1 (abort with ^G)<br>
1> rr(array).<br>
[array]<br>
2> array:new(19, {default, {0, unspecified, 0}}).<br>
#array{size = 19,max = 0,<br>
default = {0,unspecified,0},<br>
elements = 100}<br>
3> array:new(9, {default, {0, unspecified, 0}}).<br>
#array{size = 9,max = 0,<br>
default = {0,unspecified,0},<br>
elements = 10}<br>
</div>
<div style="font-family:arial,helvetica,sans-serif"
class="gmail_default"><br>
</div>
<div style="font-family:arial,helvetica,sans-serif"
class="gmail_default">Here is what is happening: In
Erlang, an Array is a very flat tree with a branching
factor of 10. It is stored in `elements`. But instead of
storing a tree, you may store an integer encoding how much
more space is allowed in this part of the tree when it is
expanded. You have created a tree of size 19, which means
it needs two expansions of size 10, or 100---though not
all of those expansions will be used, as it is extra
padding. If you had created an array of size 101, it would
have been 1000, and so on. It is always the next log10
ceiling value. In the example with size 9, only one
expansion is needed in which case we have a `10` in the
elements.</div>
<div style="font-family:arial,helvetica,sans-serif"
class="gmail_default"><br>
</div>
<div style="font-family:arial,helvetica,sans-serif"
class="gmail_default">You might ask why it isn't
represented as a traditional array. This is because of
persistence in data structures: older versions of the tree
can be kept alive, so you cannot overwrite an older array.
It is useful in a number of situations, the most important
one being that you can know the state of a crashing
process before it crashed, and what event led to said
crash.<br>
</div>
<br>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
erlang-questions mailing list
<a class="moz-txt-link-abbreviated" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>
<a class="moz-txt-link-freetext" href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a>
</pre>
</blockquote>
<br>
</body>
</html>