Доступ к элементу кортежа из дискриминационного союза - PullRequest
0 голосов
/ 02 октября 2018

У меня есть тип с именем type x, и у него есть следующие члены в форме различимого объединения

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

У меня есть функция, которая принимает два аргумента и фильтрует список в соответствии со сравнениями, сделанными n.Я не могу понять последнюю часть.Как я могу сравнить каждое значение пары с моим значением n в этой функции?

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

1 Ответ

0 голосов
/ 02 октября 2018

Вы можете создать функцию, которая сравнивает один объект 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) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...