1b: Tree Addressing
Last updated
> (cap 4)
%2> (cap 6)
%3> (cap (add 10 9))
%2> (cap 1)
! exit> (cap 0x40))
%2> `@`0x40
64> (cap 'a')
%3> `@`'a'
97++ mas
~/ %mas
|= a=@
^- @
?- a
?(%2 %3) 1
?(%0 %1) !!
* (add (mod a 2) (mul $(a (div a 2)) 2))
==> (mas 3)
1> (mas 4)
2> (mas 5)
3> (cap 5)
%2> (mas 7)
3> (cap 7)
%3> (mas 11)
7> (mas (mas 11))
3> (cap (mas 6))
%3> (mas 0)
! exit> (mas 1)
! exit 1
/ \
/ \
2 3 <--here are the head (`+2`) and the tail (`+3`)
/ \ /\
4 5 6 7
/\ /\ /\ /\
(continues...) 1(3) ::new/(old) addresses
/ \
2 3
(6) (7)
/ \ /\
/ \ / \
4 5 6 7
(12) (13) (14) (15)
/ \ / \ / \ / \
(continues...)++ peg
~/ %peg
|= [a=@ b=@]
?< =(0 a)
^- @
?- b
%1 a
%2 (mul a 2)
%3 +((mul a 2))
* (add (mod b 2) (mul $(b (div b 2)) 2))
==> (peg 4 1)
4> (peg 1 4)
4> (peg 4 2)
8> (peg 4 8)
32> (peg 4 (peg 4 2))
32> (peg 8 45)
269> (cap (peg 4 2))
%2 1
/ \
/ \
/ \
/ \
2 3 <- here is the subtree `+3`. The subtree address is `a` in `(peg a b)`
/ \ / \
/ \ / \
4 5 6 7
/ \ / \ / \ / \
8 9 10 11 12 13 14 15
/\ /\ /\ /\ /\ /\ /\ /\
(continues...) 1(3) <- new/(old) addresses
/ \
2 3
(6) (7)
/ \ /\
/ \ / \
4 5 6 7
(12) (13) (14) (15)
/ \ / \ / \ / \
(continues...)