You're right : that's true in the "int" case and I hadn't considered it.

But if you use the same trick for ('a -> float) or other types you can get a segfault :

# external floatify : 'a -> float = "%identity";;
external floatify : 'a -> float = "%identity"
# floatify 0;;
Segmentation fault

Also there are other problems with "intify" that may be worse than segfaults : your application running with nonsense data and failing at an arbitrary later point. Though ocaml doesn't fail (in the current implementation, it would be unwise to assume that the GC/runtime will never check this), you get strange behavior with those integers-wich-are-not-integers :

# let x = intify (1,2);;
val x : int = 70246988845964
# x * 1 - x;;
- : int = 1