OCaml: проверьте список записей на членство - PullRequest
3 голосов
/ 14 сентября 2009

Если я определил следующие типы:

type category = Noun | Verb | Adjective | Preposition;;
type transformation = {start: category; fin: category};;

Как лучше всего ответить на вопрос "это запись где start = Noun в списке преобразования типов?

Вроде как

let un = [{start= Noun; fin= Noun}; {start= Verb; fin= Adjective}];;    
List.mem {start = Noun; _} un;;

За исключением того, что синтаксис, кажется, не работает.

1 Ответ

5 голосов
/ 14 сентября 2009
List.exists (fun x -> x.start = Noun) un

List.mem можно рассматривать как особый случай List.exists, где List.mem x ys эквивалентно List.exists ((=) x) ys. Таким образом, вы можете использовать List.exists для более общих критериев членства.

...