La fonction ifzéro évalue ses deux arguments (de plus l'ordre d'évaluation n'est pas déterminé).

Il faudrait que ses arguments soient systématiquement gelés, donc passés comme des fonctions de type unit -> 'a .

let ifzéro n sioui sinon = if n = 0 then sioui() else sinon();; ifzéro 3 (fun() -> print_string "oui") (fun() -> print_string "non");;