let rec produit a b = match (a,b) with (0,b) -> 0 |(a,0) -> 0 |(1,b) -> b |(a,1) -> a |(a,b) -> b + produit (a-1) b;; type point == float * float;; let (creepoint: float -> float -> point) = function x -> function y -> (x,y);; let (abscisse: point -> float) = function (x,y) -> x;; let (ordonnee: point -> float) = function (x,y) -> y;; let (milieu: point -> point -> point) = function A -> function B -> ((abscisse A +. abscisse B)/.2.,(ordonnee A +. ordonnee B)/.2.);; let rec supprimeimpaire l = match l with [] -> [] |t::r -> if (t mod 2 = 1) then supprimeimpaire r else t::supprimeimpaire r;;