Il n'y a pas de message "pile pleine" car ta fonction est tail-récursive (elle se rappelle en faisant un tail-call, c'est à dire un appel qui est la dernière opération de la fonction). Caml l'optimise en faisant un appel tail-récursif, qui ne fait pas grandir la pile. La pile reste donc constante et ton code boucle à l'infini.
Si tu veux dépasser la pile, il faut empêcher la tail-rec (en faisant de l'appel terminal une opération intermédiaire, et pas l'opération finale) :
let rec h x = let y = h x in y
Partager