36
1
type Tree<'a> =
2
| Empty
3
| Node of 'a * Tree<'a> * Tree<'a>
4
5
let traverse (tree : Tree<'a>) =
6
let rec loop (tree : Tree<'a>) = seq {
7
match tree with
8
| Empty -> ()
9
| Node (value, left, right) ->
10
yield value
11
12
yield! loop left
13
yield! loop right
14
}
15
16
loop tree
17
18
let tree =
19
Node (1,
20
Node (2,
21
Node (4, Empty, Empty),
22
Node (5, Empty, Empty)),
23
Node (3,
24
Node (6,
25
Node (7, Empty, Empty),
26
Empty),
27
Node (8, Empty, Empty)))
28
29
// 1
30
// / \
31
// 2 3
32
// / \ / \
33
// 4 5 6 8
34
// /
35
// 7
36
traverse tree |> Seq.iter (printfn "%d") // 1 2 4 5 3 6 7 8
Compilation error (line 1, col 1): A namespace cannot directly contain members such as fields or methods