Pr´evoir quand a lieu un calcul
◮en outermost, on ne sait quels calculs seront faits quand
let l’ = List.map f l
let a = List.hd (List.tl l’) in affiche a;;
let b = List.hd l’ in affiche b;;
◮la strat´egie outermost est adapt´ee dans le cadre de la
programmation fonctionnelle pure (Haskell)
◮en Caml, les effets de bord sont d´eclench´es `a un moment
donn´e: cela s’accomode mal avec outermost
◮la plupart des langages sont innermost
◮Algol: combinaison de outermost et r´ef´erences
(mais strat´egie d’ex´ecution bien sp´ecifique)
◮en outermost, l’´egalit´e est vraiment une ´egalit´e
◮en innermost, 3+4 signifie “´evalue 3+4”
◮outermost impl´ement´ee na¨ıvement duplique les calculs
(fun x -> x*x) (3+4)
paresse = outermost + partage