(* These types describe a catalog of t-shirts. *) type size = XL | L | M | S type color = White | Black | Blue type tshirt = { (* Each t-shirt may have a message, e.g. "I Passed an OCaml Exam And All I Got Was This Lousy T-Shirt" *) message: string ; size: size ; color: color ; (* Price in €. *) price: int } type catalog = tshirt list (* Trees are used in later questions. Do not panic yet. * * A node contains a value of type 'a, an id, and possibly some children. * The id of the node is not necessarily unique. It does not matter. * *) type 'a tree = { value: 'a ; id: int ; children: 'a tree list }