(* Multiplication des éléments d'une liste d'entiers, en s'arrêtant dès qu'on trouve un 0. *) (* Voir d'abord l'exercice 2.16 *) (* Version qui travaille en espace de pile constant, avec un accumulateur, pour éviter tout débordement de pile sur une liste très grande. *) let rec mult_aux acc = function [] -> acc 0 :: _ -> 0 x :: l -> mult_aux (x * acc) l let mult = mult_aux 1 (* Note : on s'arrête effectivement losrque 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 remédier à cela. *)
This document was generated using caml2html