从有区别的工会访问元组项目

时间:2018-10-02 10:02:49

标签: f#

我的类型称为类型x,它具有以下形式的成员,即歧视的联合形式

type Info= Empty | Value of int | Pair of (int * int)

我有一个函数,该函数接受两个参数并根据n进行的比较过滤列表。我不知道最后一部分。如何在该函数中将Pair的每个值与我的n值进行比较?

let filterInfo (n:int) (xs:Info list) = xs |>  List.filter (fun (x) -> x <> Empty && x > Value n && // ) 

1 个答案:

答案 0 :(得分:2)

您可以创建一个使用模式匹配来比较单个Info对象的函数。这样的东西就足够了:

let compareInfo (n:int) (info:Info) =
        match info with
        | Empty -> false
        | Value x -> n > x
        | Pair (a, b) -> ...

您可以通过过滤调用中的n来调用它:

let filterInfo (n:int) (xs:Info list) = xs |>  List.filter (compareInfo n)