77 lines
16 KiB
Plaintext
77 lines
16 KiB
Plaintext
-->
|
|
<span style="color: #000080;font-style:italic;">-- simple one-dimensional arrays:</span>
|
|
<span style="color: #004080;">sequence</span> <span style="color: #000000;">s1</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">0.5</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">4.7</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">9</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- length(s1) is now 4</span>
|
|
<span style="color: #000000;">s2</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">),</span> <span style="color: #000080;font-style:italic;">-- s2 is {0,0,0,0,0,0}</span>
|
|
<span style="color: #000000;">s3</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">tagset</span><span style="color: #0000FF;">(</span><span style="color: #000000;">5</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- s3 is {1,2,3,4,5}</span>
|
|
|
|
<span style="color: #0000FF;">?</span><span style="color: #000000;">s1</span><span style="color: #0000FF;">[</span><span style="color: #000000;">3</span><span style="color: #0000FF;">]</span> <span style="color: #000080;font-style:italic;">-- displays 4.7 (nb 1-based indexing)</span>
|
|
<span style="color: #000000;">s1</span><span style="color: #0000FF;">[</span><span style="color: #000000;">3</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span> <span style="color: #000080;font-style:italic;">-- replace that 4.7</span>
|
|
<span style="color: #000000;">s1</span> <span style="color: #0000FF;">&=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">}</span> <span style="color: #000080;font-style:italic;">-- length(s1) is now 6 ({0.5,1,0,9,5,6})</span>
|
|
<span style="color: #000000;">s1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">s1</span><span style="color: #0000FF;">[</span><span style="color: #000000;">2</span><span style="color: #0000FF;">..</span><span style="color: #000000;">5</span><span style="color: #0000FF;">]</span> <span style="color: #000080;font-style:italic;">-- length(s1) is now 4 ({1,0,9,5})</span>
|
|
<span style="color: #000000;">s1</span><span style="color: #0000FF;">[</span><span style="color: #000000;">2</span><span style="color: #0000FF;">..</span><span style="color: #000000;">3</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">}</span> <span style="color: #000080;font-style:italic;">-- length(s1) is now 5 ({1,2,3,4,5})</span>
|
|
<span style="color: #000000;">s1</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">6</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- length(s1) is now 6 ({1,2,3,4,5,6})</span>
|
|
<span style="color: #000000;">s1</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">prepend</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- length(s1) is now 7 ({0,1,2,3,4,5,6})
|
|
|
|
-- negative subscripts can also be used, counting from the other end, eg</span>
|
|
<span style="color: #000000;">s2</span><span style="color: #0000FF;">[-</span><span style="color: #000000;">2</span><span style="color: #0000FF;">..-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{-</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">}</span> <span style="color: #000080;font-style:italic;">-- s2 is now {0,0,0,0,-2,-1}
|
|
|
|
-- multi dimensional arrays:</span>
|
|
<span style="color: #004080;">sequence</span> <span style="color: #000000;">y</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">5</span><span style="color: #0000FF;">,</span><span style="color: #000000;">5</span><span style="color: #0000FF;">}},</span>
|
|
<span style="color: #0000FF;">{{</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">9</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">}},</span>
|
|
<span style="color: #0000FF;">{{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">7</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">},{</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">}}}</span>
|
|
<span style="color: #000080;font-style:italic;">-- y[2][3][1] is 9</span>
|
|
|
|
<span style="color: #000000;">y</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">),</span><span style="color: #000000;">3</span><span style="color: #0000FF;">),</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span>
|
|
<span style="color: #000080;font-style:italic;">-- same structure, but all 0s
|
|
|
|
-- Array of strings:</span>
|
|
<span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">"Hello"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"World"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Phix"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">""</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Last One"</span><span style="color: #0000FF;">}</span>
|
|
<span style="color: #000080;font-style:italic;">-- s[3] is "Phix"
|
|
-- s[3][2] is 'h'
|
|
|
|
-- A Structure:</span>
|
|
<span style="color: #004080;">sequence</span> <span style="color: #000000;">employee</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{</span><span style="color: #008000;">"John"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Smith"</span><span style="color: #0000FF;">},</span>
|
|
<span style="color: #000000;">45000</span><span style="color: #0000FF;">,</span>
|
|
<span style="color: #000000;">27</span><span style="color: #0000FF;">,</span>
|
|
<span style="color: #000000;">185.5</span><span style="color: #0000FF;">}</span>
|
|
|
|
<span style="color: #000080;font-style:italic;">-- To simplify access to elements within a structure it is good programming style to define constants that name the various fields, eg:</span>
|
|
<span style="color: #008080;">constant</span> <span style="color: #000000;">SALARY</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">2</span>
|
|
|
|
<span style="color: #000080;font-style:italic;">-- Array of structures:</span>
|
|
<span style="color: #004080;">sequence</span> <span style="color: #000000;">employees</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span>
|
|
<span style="color: #0000FF;">{{</span><span style="color: #008000;">"Jane"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Adams"</span><span style="color: #0000FF;">},</span> <span style="color: #000000;">47000</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">34</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">135.5</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- a[1]</span>
|
|
<span style="color: #0000FF;">{{</span><span style="color: #008000;">"Bill"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"Jones"</span><span style="color: #0000FF;">},</span> <span style="color: #000000;">57000</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">48</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">177.2</span><span style="color: #0000FF;">},</span> <span style="color: #000080;font-style:italic;">-- a[2]
|
|
-- .... etc.</span>
|
|
<span style="color: #0000FF;">}</span>
|
|
<span style="color: #000080;font-style:italic;">-- employees[2][SALARY] is 57000
|
|
|
|
-- A tree can be represented easily, for example after adding "b","c","a" to it you might have:</span>
|
|
<span style="color: #004080;">sequence</span> <span style="color: #000000;">tree</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{{</span><span style="color: #008000;">"b"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #000000;">2</span><span style="color: #0000FF;">},</span>
|
|
<span style="color: #0000FF;">{</span><span style="color: #008000;">"c"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">},</span>
|
|
<span style="color: #0000FF;">{</span><span style="color: #008000;">"a"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">}}</span>
|
|
|
|
<span style="color: #000080;font-style:italic;">-- ie assuming </span>
|
|
<span style="color: #008080;">constant</span> <span style="color: #000000;">ROOT</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">VALUE</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">LEFT</span><span style="color: #0000FF;">=</span><span style="color: #000000;">2</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">RIGHT</span><span style="color: #0000FF;">=</span><span style="color: #000000;">3</span> <span style="color: #000080;font-style:italic;">-- then
|
|
-- tree[ROOT][VALUE] is "b"
|
|
-- tree[ROOT][LEFT] is 3, and tree[3] is the "a"
|
|
-- tree[ROOT][RIGHT] is 2, and tree[2] is the "c"
|
|
|
|
-- The operations you might use to build such a tree (tests/loops/etc omitted) could be:</span>
|
|
<span style="color: #000000;">tree</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span>
|
|
<span style="color: #000000;">tree</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tree</span><span style="color: #0000FF;">,{</span><span style="color: #008000;">"b"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">})</span>
|
|
<span style="color: #000000;">tree</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tree</span><span style="color: #0000FF;">,{</span><span style="color: #008000;">"c"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">})</span>
|
|
<span style="color: #000000;">tree</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">][</span><span style="color: #000000;">RIGHT</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tree</span><span style="color: #0000FF;">)</span>
|
|
<span style="color: #000000;">tree</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tree</span><span style="color: #0000FF;">,{</span><span style="color: #008000;">"a"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">})</span>
|
|
<span style="color: #000000;">tree</span><span style="color: #0000FF;">[</span><span style="color: #000000;">1</span><span style="color: #0000FF;">][</span><span style="color: #000000;">LEFT</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tree</span><span style="color: #0000FF;">)</span>
|
|
|
|
<span style="color: #000080;font-style:italic;">-- Finally, some tests (recall that we have already output a 4.7):</span>
|
|
<span style="color: #0000FF;">?</span><span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">3</span><span style="color: #0000FF;">]</span>
|
|
<span style="color: #0000FF;">?</span><span style="color: #000000;">tree</span>
|
|
<span style="color: #0000FF;">?</span><span style="color: #000000;">tree</span><span style="color: #0000FF;">[</span><span style="color: #000000;">ROOT</span><span style="color: #0000FF;">][</span><span style="color: #000000;">VALUE</span><span style="color: #0000FF;">]</span>
|
|
<span style="color: #000000;">employees</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">employees</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">employee</span><span style="color: #0000FF;">)</span>
|
|
<span style="color: #0000FF;">?</span><span style="color: #000000;">employees</span><span style="color: #0000FF;">[</span><span style="color: #000000;">3</span><span style="color: #0000FF;">][</span><span style="color: #000000;">SALARY</span><span style="color: #0000FF;">]</span>
|
|
<span style="color: #0000FF;">?</span><span style="color: #000000;">s1</span>
|
|
<span style="color: #0000FF;">?</span><span style="color: #000000;">s2</span>
|
|
<!--
|