= let rec mapInner tree cont = match tree with | Leaf x -> Leaf(f x) |> cont | Node (left, right) -> mapInner left (fun leftResult -> mapInner right (fun rightResult -> Node(leftResult, rightResult) |> cont)) mapInner tree id > map ((*) 2) (Node (Leaf 1, Leaf 2));; val it: int Tree = Node (Leaf 2, Leaf 4) 25