Subtyping, covariance and contravariance in OCaml | Hacker News Reader