【发布时间】:2014-11-27 05:50:33
【问题描述】:
这是一个有点初学者的问题。我一直在尝试验证以下类型的家谱。我找不到一个简单的方法来做到这一点。我们将不胜感激。
type BirthYear = int;;
type Tree = Person of BirthYear * Children
and Children = Tree list;;
我想验证给定的家谱,以使每个人都比他们的孩子大,并进一步检查孩子的列表是否按年龄排序(从大到小)。最好使用返回布尔值的函数来完成。类似这样的东西:
let rec validate (Person(x,child)) =
let vali = child |> List.forall (fun (y,_) -> y < x)
【问题讨论】:
-
我尝试过使用 List.forall 和 List.collect,但仅用于一个简单的功能。我无法弄清楚递归部分,因此我可以遍历整个树。
-
请与您分享一个sn-p - 如果您有什么要开始的,我相信每个人都会更乐意提供帮助。至少在树上进行模式匹配,或者类似的东西!
-
以上是我走过的最远的地方