(*exemples introductifs*) let val_abs (x : float) : float = if x >= 0. then x else -. x ;; let racine (a : float) (b : float) (c : float) : float * float = let delta = b*.b -. 4.*.a*.c in if delta >= 0. then ((-.b -. sqrt(delta))/.(2.*.a), (-.b +. sqrt(delta))/.(2.*.a)) else failwith ("pas de racines") ;; let rec fact (n : int) : int = if (n=0 || n=1) then 1 else n * fact (n-1);; let affine (a : float) (b : float) : float-> float = fun x -> a *. x +. b ;; let compo (f : int -> int) (g : int -> int) : int-> int = fun x -> g (f x) ;; let racine (a : float) (b : float) (c : float) : float * float = let delta = b *. b -. 4. *. a *. c in if delta >= 0. then ((-.b -. sqrt(delta))/. (2.*.a), (-.b +. sqrt(delts))/. (2.*.a)) else failwith ("pas de racines") ;; let rec fact (n : int) : int = if (n=0 || n=1) then 1 else n * fact (n-1);; let affine (a : float) (b : float) : float-> float = fun x -> a *. x + .b ;; let compo (f : int -> int) (g : int -> int) : int-> int = fun x -> g (f x) ;; (* exemples de definitions globales *) let x=1 ;; let y=x+1;; y;; let x=3;; y;; let y=x+1;; y;; (* exemples de definitions locale *) let a=3 in a+1 ;; a;; let a=3 in let b=a+1;; (* definitions simultanées : valeur de w ? *) let x=2;; let z=3;; let x=12 and w=x+1 in w;; let x=12 and w=z+1 in w;; (* operations sur int, float et char *) 1.5 +. (float_of_int 2);; int_of_float 3.6 ;; Char.code 'x' ;; Char.code y ;; Char.chr 120 ;; Char.uppercase 'X' ;; (* definition et utilisation de fonctions *) let carre (x:int) : int = x*x ;; (carre 5) ;; let moyenne (x:int) (y:int) : int = (x+y)/2 ;; let moy_ol (a:int) (b:int) (c:int) (d:int) : float = (float_of_int (a+b+c+d-(min4 a b c d) - (max4 a b c d)))/. 2.0;; type age = int;; (* age compris entre 0 et 130 *)