diff options
author | Vladimir Azarov <avm@intermediate-node.net> | 2025-08-04 22:13:17 +0200 |
---|---|---|
committer | Vladimir Azarov <avm@intermediate-node.net> | 2025-08-04 22:13:17 +0200 |
commit | a4c60603f61dd1a9f0ce420be9067965586dd694 (patch) | |
tree | c5f48221a8291b817d6eec0fd3f70eeb8c26a300 /tree.sml | |
parent | 396ebf0c76153e5e1e9dc77371bdd02b4d3d85d1 (diff) |
Object assembly
Diffstat (limited to 'tree.sml')
-rw-r--r-- | tree.sml | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -126,6 +126,26 @@ structure Tree: TREE = struct print' 0 t end + fun traverse Empty _ acc = acc + | traverse (Node (k, v, left, right)) f acc = + let + val acc = traverse left f acc + val acc = f k v acc + val acc = traverse right f acc + in + acc + end + + fun changeV Empty _ = Empty + | changeV (Node (k, v, left, right)) f = + let + val left = changeV left f + val right = changeV right f + val v = f v + in + Node (k, v, left, right) + end + fun size Empty = 0 | size (Node(_, _, l, r)) = 1 + size l + size r end |