Non, car au retour, il faut ajouter un ŕ la valeur rendue par l'appel récursif.

let length_fun l = let rec length n l = match l with h::t -> length (succ n) t | [] -> n in length 0 l;;