如果集合为空,如何检查 f#?
How to check in f# if the set is Empty?
如何检查集合是否为空,我已经实现了以下代码,如果集合有一个空集合,那么我应该得到值 true else false,例如:[1; 2; []] 这个集合的结果应该是 true 并且如果集合是 [1; 2; 3] 这应该导致错误,因为这个没有空集。以下是给我错误的代码:
let rec isEmpty S =
match S with
|[] -> true
|_ -> false
|e::rest -> ([]=e) || (isEmpty [] rest)
不幸的是,对于您的用例,F# 比您在这里想要的要多 'strongly typed'。
在 F# 中,值类似于 [1; 2; 3] 是一个 int 列表,int 列表不会接受像 [1; 这样的值。 2; []].
或许您可以尝试为您的问题定义一个新的(递归)数据类型。
如何检查集合是否为空,我已经实现了以下代码,如果集合有一个空集合,那么我应该得到值 true else false,例如:[1; 2; []] 这个集合的结果应该是 true 并且如果集合是 [1; 2; 3] 这应该导致错误,因为这个没有空集。以下是给我错误的代码:
let rec isEmpty S =
match S with
|[] -> true
|_ -> false
|e::rest -> ([]=e) || (isEmpty [] rest)
不幸的是,对于您的用例,F# 比您在这里想要的要多 'strongly typed'。
在 F# 中,值类似于 [1; 2; 3] 是一个 int 列表,int 列表不会接受像 [1; 这样的值。 2; []].
或许您可以尝试为您的问题定义一个新的(递归)数据类型。