From a4c60603f61dd1a9f0ce420be9067965586dd694 Mon Sep 17 00:00:00 2001 From: Vladimir Azarov Date: Mon, 4 Aug 2025 22:13:17 +0200 Subject: Object assembly --- tree.sml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'tree.sml') diff --git a/tree.sml b/tree.sml index ee82485..7209690 100644 --- a/tree.sml +++ b/tree.sml @@ -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 -- cgit v1.2.3