What’s the difference between caml_alloc(1, 0) and caml_alloc(1, 1)? Last argument is the “tag”. Docs says:
0 to No_scan_tag−1 A structured block (an array of OCaml objects). Each field is a value.
A tag lower than No_scan_tag indicates a structured block, containing well-formed values, which is recursively traversed by the garbage collector.
This does not really explain the use-case of tag numbers, at least not for me.