title: Using List.exists, List.for_all, and List.filter together in OCaml
body: <p>I'm trying to filter a list of user-defined types by the contents of a list within those types, and I was wondering if there's a way to use <code>List.filter</code>, <code>List.exists</code>, and <code>List.for_all</code> to reach that inner list instead of making a function to reach it.</p>
  
  <pre><code>type weight = int
  type height = int 
  type colours = Red | Black | Orange | White
  type cat = Cat of weight * height * colours list
  
  let cat1 = Cat (14, 14, [Red; Black])
  let cat2 = Cat (15, 20, [Black; White])
  let cat3 = Cat (13, 15, [Red; White])
  let cats =  [cat1; cat2; cat3]
  </code></pre>
  
  <p>Is there a way to create a list of cats that aren't a certain colour using only these List functions? This is a homework question so I can't really include my code, but I added a function to isolate the list of colours within the type and then compared those lists </p>
  
  <p>Thank you!</p>