26.12.2014 Views

CORRIGE TP 1 Exercice 1.

CORRIGE TP 1 Exercice 1.

CORRIGE TP 1 Exercice 1.

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!