F# 类型不匹配,应为bool list,但应为get int list
我将根据两个边界过滤一个F# 类型不匹配,应为bool list,但应为get int list,f#,F#,我将根据两个边界过滤一个int列表。为此,我使用了列表。过滤器: let CountFilesInRange ele lowerRang upperRange= match ele with | ele when lowerRang< ele< upperRange -> true | _ ->false List.filter (CountFilesInRange 0 5
int列表
。为此,我使用了列表。过滤器:
let CountFilesInRange ele lowerRang upperRange=
match ele with
| ele when lowerRang< ele< upperRange -> true
| _ ->false
List.filter (CountFilesInRange 0 5000) listOfSizes
我怎样才能修好它
与say@ildjarn一样-语法无效
您的参数顺序错误。
也许,您想这样做:
例如:
let listOfSizes = [1;2;3;4]
let betweenExclusive lowerBound upperBound value =
match value with
| value when lowerBound < value && value < upperBound -> true
| _ -> false
List.filter (betweenExclusive 1 4) listOfSizes |> printfn "%A"
链接:
编辑:
谢谢@Sehnsucht的评论。此函数可以重写为:
let betweenExclusive lowerBound upperBound value =
lowerBound < value && value < upperBound
让betweenExclusiveLowerBound上限值=
下限
与say@ildjarn一样-语法无效
您的参数顺序错误。
也许,您想这样做:
例如:
let listOfSizes = [1;2;3;4]
let betweenExclusive lowerBound upperBound value =
match value with
| value when lowerBound < value && value < upperBound -> true
| _ -> false
List.filter (betweenExclusive 1 4) listOfSizes |> printfn "%A"
链接:
编辑:
谢谢@Sehnsucht的评论。此函数可以重写为:
let betweenExclusive lowerBound upperBound value =
lowerBound < value && value < upperBound
让betweenExclusiveLowerBound上限值=
下限lowerRang
语法无效;尝试lowerRang
@ildjarn-它看起来可能是有效的,因为错误在filter
中,但是它可能被解析为(lowerRang
因此upperRange
被推断为bool
,并且CountFilesInRange 0 5000
的类型为bool->bool
。现在还可以,但它总是给我一个空列表请注意,所有与表达式匹配的作为“范围检查”是无用的lower
已经是一个布尔表达式,您可以简单地返回它lowerRang
是无效语法;尝试lowerRang
@ildjarn-它看起来可能是有效的,因为错误在filter
中,但是它可能被解析为(lowerRang
因此upperRange
被推断为bool
,并且CountFilesInRange 0 5000
的类型为bool->bool
。现在还可以,但它总是给我一个空列表请注意,所有与表达式匹配的作为“范围检查”是无用的lower
已经是一个布尔表达式,您只需返回它即可