You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>CORRIGE</strong> <strong>TP</strong> 1<br />
<strong>Exercice</strong> <strong>1.</strong><br />
# let x=5;;<br />
val x : int = 5<br />
# let x=6 in x*x ;;<br />
- : int = 36<br />
# x ;;<br />
- : int = 5<br />
# x = 4 ;;<br />
- : bool = false<br />
# let y= (let x = 4 in x+3) ;;<br />
val y : int = 7<br />
# let f = function x -> x+2 ;;<br />
val f : int -> int = <br />
# f 5 ;;<br />
- : int = 7<br />
# f (5) ;;<br />
- : int = 7<br />
# (f 5) ;;<br />
- : int = 7<br />
# let f x = x+2 ;;<br />
val f : int -> int = <br />
# f (3 * 7) ;;<br />
- : int = 23<br />
# (* attention *) f 3 * 7 ;;<br />
- : int = 35<br />
# let val_abs x = if x int = <br />
# let f2 x y =<br />
let z = x-y in<br />
if z>0 then z else x;;<br />
val f2 : int -> int -> int = <br />
# f2 3 8 ;;<br />
- : int = 3<br />
# f2 9 2 ;;<br />
- : int = 7<br />
# let f3 x y =<br />
let z = x*x in<br />
let w = z-y in<br />
if w>0 then w else z ;;<br />
val f3 : int -> int -> int = <br />
# f3 5 2 ;;<br />
- : int = 23<br />
# f3 2 13 ;;<br />
- : int = 4<br />
# let f4 = f3 5 ;;<br />
val f4 : int -> int =
# f4 2 ;;<br />
- : int = 23<br />
# let f5 x = f3 x 13 ;;<br />
val f5 : int -> int = <br />
# f5 2 ;;<br />
- : int = 4<br />
# (* la meme, version non curryfiee *)<br />
let f3 = function (x,y) -><br />
let z = x*x in<br />
let w = z-y in<br />
if w>0 then w else z ;;<br />
val f3 : int * int -> int = <br />
# f3 (5,2);;<br />
- : int = 23<br />
# let f4 = function y -> f3 (5,y) ;;<br />
val f4 : int -> int = <br />
# f4 2 ;;<br />
- : int = 23<br />
# let f5 x = f3 (x,13) ;;<br />
val f5 : int -> int = <br />
# f5 2;;<br />
- : int = 4<br />
# let ident = function x -> x ;;<br />
val ident : 'a -> 'a = <br />
# ident 7 ;;<br />
- : int = 7<br />
# ident "salut" ;;<br />
- : string = "salut"<br />
# let polynome a b c x =<br />
(float_of_int a) *. x *. x +. (float_of_int b) *. x<br />
+. float_of_int c ;;<br />
val polynome : int -> int -> int -> float -> float = <br />
# let poly1 = polynome 3 (-2) 2 ;;<br />
val poly1 : float -> float = <br />
# poly1 8.5 ;;<br />
- : float = 20<strong>1.</strong>75<br />
<strong>Exercice</strong> 2.<br />
# let subfg f g x = f(x) - g(x) ;;<br />
val subfg : ('a -> int) -> ('a -> int) -> 'a -> int = <br />
# let g1 x = x * x ;;<br />
val g1 : int -> int = <br />
# let g2 x = x - 1 ;;<br />
val g2 : int -> int = <br />
# let a = 4 ;;<br />
val a : int = 4<br />
# subfg g1 g2 (a + 2) ;;<br />
- : int = 31<br />
# let compose f g x = f (g x) ;;<br />
val compose : ('a -> 'b) -> ('c -> 'a) -> 'c -> 'b = <br />
# let g3 = compose g1 g2 ;;<br />
val g3 : int -> int =
# g3 (a + 2) ;;<br />
- : int = 25<br />
# let curryfie f a b = f(a,b) ;;<br />
val curryfie : ('a * 'b -> 'c) -> 'a -> 'b -> 'c = <br />
# let multip (x, y) = x * y ;;<br />
val multip : int * int -> int = <br />
# multip (7, 3) ;;<br />
- : int = 21<br />
# let multipcurr = curryfie multip ;;<br />
val multipcurr : int -> int -> int = <br />
# multipcurr 7 3 ;;<br />
- : int = 21<br />
# let uncurryfie f (a, b) = f a b ;;<br />
val uncurryfie : ('a -> 'b -> 'c) -> 'a * 'b -> 'c = <br />
# let add x y = x + y ;;<br />
val add : int -> int -> int = <br />
# add 4 31 ;;<br />
- : int = 35<br />
# let adduncurr = uncurryfie add ;;<br />
val adduncurr : int * int -> int = <br />
# adduncurr (27, 9) ;;<br />
- : int = 36<br />
# let uncurryfie2 f x = f (fst x) (snd x) ;;<br />
val uncurryfie2 : ('a -> 'b -> 'c) -> 'a * 'b -> 'c = <br />
# let adduncurr2 = uncurryfie2 add ;;<br />
val adduncurr2 : int * int -> int = <br />
# adduncurr2 (4, 8) ;;<br />
- : int = 12<br />
<strong>Exercice</strong> 3.<br />
# let rec multegypt x y =<br />
if x = 0 then 0<br />
else if (x mod 2)=0 then multegypt (x/2) (y*2)<br />
else y + multegypt (x-1) y ;;<br />
val multegypt : int -> int -> int = <br />
# multegypt 5 8 ;;<br />
- : int = 40<br />
# multegypt 13 6 ;;<br />
- : int = 78<br />
# let rec sommelst l =<br />
if l = [] then 0<br />
else (List.hd l) + sommelst (List.tl l) ;;<br />
val sommelst : int list -> int = <br />
# sommelst [ 6 ; 2 ; 10 ; 1 ; 3 ] ;;<br />
- : int = 22
# let rec concat l1 l2 =<br />
if l1 = [] then l2<br />
else (List.hd l1)::(concat (List.tl l1) l2) ;;<br />
val concat : 'a list -> 'a list -> 'a list = <br />
# concat [ 6 ; 2 ; 10 ; 1 ; 3 ] [ 7 ; 12 ; 8 ] ;;<br />
- : int list = [6; 2; 10; 1; 3; 7; 12; 8]<br />
# let rec monmap f l =<br />
if l = [] then []<br />
else f(List.hd l)::(monmap f (List.tl l)) ;;<br />
val monmap : ('a -> 'b) -> 'a list -> 'b list = <br />
# let succ x = x + 1 ;;<br />
val succ : int -> int = <br />
# monmap succ [ 34 ; 5 ; 91 ; 17 ; 2 ] ;;<br />
- : int list = [35; 6; 92; 18; 3]<br />
# let sommefct f a b =<br />
let rec somme f x y =<br />
if x = y then f(x) else f(x)+(somme f (x+1) y) in<br />
if a int) -> int -> int -> int = <br />
# let carre x = x * x ;;<br />
val carre : int -> int = <br />
# sommefct carre 7 7 ;;<br />
- : int = 49<br />
# sommefct carre 7 3 ;;<br />
- : int = 0<br />
# sommefct carre 2 5 ;;<br />
- : int = 54