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
    已经是一个布尔表达式,您只需返回它即可