我的类型称为类型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 && // )
答案 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)