I\'m trying to implement a tree in F# using a list of tuples.
[a]
where a
= (string, [a])
Each node has a list of their childr
There are a couple ways to approach this, and Daniel's is nice. But here is another way (also using discriminant unions) to define a recursive data structure, this one being a bit closer to your own approach (though I think I may actually prefer Daniel's since the cases are more explicit):
type tree<'a> =
| Node of 'a * list>
let t3 = Node("a", [Node("b", [Node("c",[]); Node("d",[])]); Node("e", [Node("f",[]); Node("g",[])])])
let rec checkstuff tple =
match tple with
| Node(_, []) -> true
| Node(node, children) ->
List.fold ( || ) false (List.map checkstuff children)