(* Déterminer si une valeur v apparaît dans un tableau a. *) (* avec une boucle while *) let occurs_for a v = let i = ref 0 in while !i < Array.length a && a.(!i) <> v do incr i done; !i < Array.length a (* avec une fonction récursive *) let occurs_rec a v = let rec check i = i < Array.length a && (a.(i) = v || check (i + 1)) in check 0 (* note : dans les deux cas, l'évaluation paresseuse de && interrompt le calcul dès que la valeur est trouvée *) (* quelques tests *) let () = let test a v b = assert (occurs_for a v = b); assert (occurs_rec a v = b) in test [||] 1 false; test [|42|] 42 true; test [|-1;1|] 0 false; let a = Array.init 10 (fun i -> i) in for i = 0 to 9 do test a i true done; test a 10 false
This document was generated using caml2html