F# 如何使用FSharp中的FsCheck检查路径是否格式良好

F# 如何使用FSharp中的FsCheck检查路径是否格式良好,f#,nuget-package,fscheck,F#,Nuget Package,Fscheck,我很难找到答案: 定义一个函数functionWF和functionPath,该函数接受一个FsTree并返回一个布尔值,用于检查给定的树作为文件系统的格式是否正确,以及路径(表示为字符串列表)的格式是否正确 格式良好的文件系统不能具有指向树中不同节点的相同路径 格式正确的路径不能包含名称为空的节点 下面a显示(字符串*FsTree)列表的类型FsTree=节点 下面是FsTree的一个示例: fsT = [Node ("f1", [Node ("f2", [])]); [Node ("f3",

我很难找到答案:

定义一个函数
functionWF
functionPath
,该函数接受一个FsTree并返回一个布尔值,用于检查给定的树作为文件系统的格式是否正确,以及路径(表示为字符串列表)的格式是否正确

格式良好的文件系统不能具有指向树中不同节点的相同路径

格式正确的路径不能包含名称为空的节点

下面a显示(字符串*FsTree)列表的类型
FsTree=节点

下面是FsTree的一个示例:

fsT = [Node ("f1", [Node ("f2", [])]); [Node ("f3", [])]]

如果
节点包含多个具有相同名称的元素,或者如果它包含的任何子树都是这种情况,则该节点的格式是错误的。具体而言,
节点[]
格式良好。这些概念可以是递归函数
functionWF
的情况:

let rec functionWF (tree : FsTree) : bool =
    match tree with 
    | Node [] -> true
    | Node list -> 
        let strings = List.map fst list
        let trees = List.map snd list
        let namesOk = allElementsUnique strings
        let subtreeOk state tree = state && (functionWF tree)
        List.fold subtreeOk namesOk trees
其中,
allegementsunique
是一个确保列表中没有重复元素的函数

我不明白你说的
functionPath
应该做什么

注:您的
FsTree
示例无效,它的
节点应位于列表之外:

let fsT = Node [("f1", Node [("f2", Node [])]); ("f3", Node [])]

您好,欢迎来到Stack Overflow:)您已经很好地定义了您的问题,这很好:)您能提供到目前为止您拥有的代码,以及1.)它当前正在做什么2.)您希望它做什么,以及3.)到目前为止您尝试修复它的代码吗