# Composition

**URL:** <https://www.debian-fr.org/t/composition/16986>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 6:38 UTC](https://www.debian-fr.org/t/composition/16986 "2016-02-20T18:38:03Z")\
**Posts on this page:** 1\
**Page:** 2

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 6:41 UTC](https://www.debian-fr.org/t/composition/16986/21 "2016-02-20T18:41:02Z")

</div>

Une composition à la compilation peut se faire à coup de préprocesseur, là le but c’est de le faire à l’éxécution: par exemple itérer n fois une application en un temps en ln(n):

[code]let compose f g = function x-\> (f (g x));;  
let rec puissance f = function  
| 0 -\> (function x-\>x)  
| 1 -\> f  
| n -\> let g = (puissance f (n/2)) in  
let h = (compose g g) in  
if (n mod 2) = 1 then (compose f h)  
else h;;

let add1 x = x+1;;  
(puissance add1 14) 0;;[/code]  
Il n’y a eu que 5 appels à la fonction compose et non 14…

[Page précédente](https://www.debian-fr.org/t/composition/16986.md?page=1)
