I was quite puzzled why boxing would be required, when the language has static typing. It turns out the boxing is an implementation detail of Ocaml's GC implementation. Ref: <a href="https://realworldocaml.org/v1/en/html/memory-representation-of-values.html" rel="nofollow">https://realworldocaml.org/v1/en/html/memory-representation-...</a>