2009-09-14 11 views
3

Если я определила следующие типы:OCaml: Проверьте список записей для членства

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;; 

Кроме этого синтаксиса не похоже на работу.

ответ

5
List.exists (fun x -> x.start = Noun) un 

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