home *** CD-ROM | disk | FTP | other *** search
- ->/* A different style of programming in E:
- -> working with and building large dynamic datastructures
- -> without using the keyword PTR
- ->
- -> / \
- -> / \
- -> / \
- -> / \ / \
- -> /\ /\ /\ /\
- ->1 2 3 4 5 6 7 8
- ->
- ->*/
-
- PROC main()
- DEF tree, a
- tree := node(
- node(
- node(leaf(1), leaf(2)),
- node(leaf(3), leaf(4))
- ),
- node(
- node(leaf(5), leaf(6)),
- node(leaf(7), leaf(8))
- )
- )
- WriteF('sum = \d\n',sum(tree))
- FOR a := 1 TO 10
- tree := node(leaf(100), tree)
- WriteF('sum = \d\n', sum(tree))
- ENDFOR
- ENDPROC
-
- PROC node(l, r)
- ENDPROC NEW ["node", l, r]
- PROC leaf(n)
- ENDPROC NEW ["leaf", n]
-
- PROC sum(t)
- DEF left, right, n
- IF t <=> ["node", left, right]
- RETURN sum(left) + sum(right)
- ELSEIF t <=> ["leaf", n]
- RETURN n
- ENDIF
- ENDPROC
-