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;;
За исключением того, что синтаксис, похоже, не работает.
Решение
List.exists (fun x -> x.start = Noun) un
List.mem
можно рассматривать как особый случай List.exists
, где List.mem x ys
эквивалентно List.exists ((=) x) ys
. Таким образом, вы можете использовать List.exists
для более общих критериев членства.
Не связан с StackOverflow