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.)到目前为止您尝试修复它的代码吗