(* Multiplication des éléments d'une liste d'entiers,
   en s'arrêtant dès qu'on trouve un 0. *)

(* Une version simple peut être *)

let rec mult = function
  | []     -> 1
  | 0 :: _ -> 0
  | x :: l -> x * mult l

(* Notes :

   - On s'arrête effectivement lorsque l'on trouve un zéro, mais on a
     tout de même effectué toutes les multiplications des éléments précédents,
     inutilement. Voir l'exercice 2.17 pour y remédier.

   - On consomme un espace de pile proportionnel à la longueur de la liste.
     Voir l'exercice 2.18 pour y remédier.
*)

This document was generated using caml2html