Many bindings deal with memory allocation. The binding of Lua deeply
interacts with the garbage collector and inspects the actual type
(tag) of OCaml value passed.
In principle you are right but the reality is that there is no much
"abstraction" in C :-)