(*
 *  Petits exemples de Caml coloriés
 *)


(* Première implantation de la suite de Fibonacci *)
let rec Fibo = function 0 -> 1 |
  1 -> 1 |
n -> if (n < 0)
  then failwith "Fibo: paramètre négatif"
else Fibo (n - 1) + Fibo (n - 2) ;;
(* Fibo : int -> int = <fun> *)


(* Implatation récursive terminale *)
let Fibo_term =
    let rec f = function prec -> function suiv ->
  function 0 -> prec |
  1 -> suiv |
n -> if (n < 0)
  then failwith "Fibo_term: paramètre négatif"
else f suiv (prec + suiv) (n - 1)
  in f 1 1 ;;
(* Fibo_term : int -> int = <fun> *)