我有一个元组列表int*string其中int是level,string是name
let src = [
(0, "root");
(1, "a");
(2, "a1");
(2, "a2");
(1, "b");
(2, "b1");
(3, "b11");
(2, "b2");
]
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为以下内容
let expectingTree =
Branch("root",
[
Branch("a",
[
Leaf("a1");
Leaf("a2")
]);
Branch("b",
[
Branch("b1", [Leaf("b11")]);
Leaf("b2")
]);
]);
Run Code Online (Sandbox Code Playgroud)
以下是我如何做到的方式,但任何人都可以通过更好的方式来实现这一目标.我是F#的新手,做同样事情的C#代码会更短,所以我想我错了.
type Node =
| Branch of (string * Node list)
| Leaf of string
let src = [
(0, "root");
(1, "a");
(2, "a1");
(2, "a2");
(1, "b");
(2, "b1");
(3, "b11");
(2, "b2");
]
let rec setParents (level:int) …Run Code Online (Sandbox Code Playgroud)