I still find it weird that constructors aren't first class functions in OCaml. `id Just` is legal in Haskell, but `id Some` is an error in OCaml. Are there any advantages of the OCaml approach?