Directives Ocaml Définition Commandes, introduites par le symbole #, permettant de modifier le comportement de la boucle d’interaction Ocaml. Exemples #quit Quitter la boucle d’interaction Compile et charger un fichier source (généralement d’extension .ml) #use #directory Ajoute un chemin de recherche #cd Change le répertoire courant
Déclaration de variables en Ocaml Variable Ocaml Une liaison entre un nom et un valeur. Types de déclaration Déclaration globale Let <nom > = <expression > Déclaration locale Let <nom > = <expression 1> in <expression 2 >
Exemple d’évaluation La valeur de y est celle retournée par expression Let y = let x = 1 in if x = 0 then 4 else 5 ;; Let <nom > = <expression > Introduire une valeur Nom de la variable Expression renvoyant une valeur La valeur de y est celle retournée par expression
Exemple d’évaluation let x = 1 in if x = 0 then 4 else 5;; Let <nom > = <expression 1> in <expression 2 > let x = 1 in if x = 0 then 4 else 5;; Nom de la variable locale Portée de la variable locale La valeur retournée est celle de expression2
P1 S Pn Vue générale des fonctions ? Paramètres d’entrées Valeur en sortie
Définition fonction f : R --------------------> R f (x) = x + 1 Définition mathématique Préciser l’ensemble de départ et l’ensemble d’arrivé Définir le corps de la fonction f : R --------------------> R x ----------------------> y = x + 1 f (x) = x + 1 Type : int ---------> int
Définition fonction En Ocaml Syntaxe 1 let double = function x --> 2*x ;; Syntaxe 2 let double x = 2*x ;; Syntaxe 3 let double (x) = 2*x ;;
Représentation graphique f : E1 : t1 --------------------> E2 : t2 x ----------------------> y = f (x) = x+1 f f (x) = x+1 E1 E2 int int
Exemple ‘a Fonction polymorphe f : ‘a ----> int f int # let f = function x -> 1 ;; Fonction polymorphe f : ‘a ----> int f ‘a int
Autres exemples # let f = function x -> 1 ;; int f : ‘a ----> int f # let f = function x -> x ;; f : ‘a ---> ‘a ‘a ‘a f # let f = function x -> x+1;; f : int ---> int int int
Fonction qui rend une fonction en résultat « fonction d’ordre supérieur » Fonction qui prend une ou plusieurs fonctions en entrée et/ou renvoie une fonction T’ ------> T’’ Let f = function x -> ( function y -> x+y );; T1 T2 Type : int -> (int ->int) int -> int ->int ‘’->’’ s’associe à droite
let h = ( fun f -> (fun x -> f(x) /. x) );; h : fonction Ensemble1 : T1 Ensemble2 :T2 Ensemble3 :T3 Ensemble4 :T4 Ensemble5 :T5 Ensemble6 :T6 float float float float
let h = ( fun f -> (fun x -> f(x) /. x) );; * float float float float h: (float -> float) -> (float -> float) h: (float -> float) -> float -> float