Ocaml

Páginas: 8 (1864 palabras) Publicado: 3 de abril de 2012
Ocaml: Un langage fonctionnel
impératif / fonctionnel
Programmation "impérative" ou "procédurale”

-  Approche

l'ordinateur vers un langage de haut niveau

  depuis le langage machine, l'assembleur, le macro-assembleur, FORTRAN, Pascal, C, Java, etc …


par le bas: abstraction de l'architecture de

-  - 

Etat: représente l'ensemble des variables

Exécution:

 état initial

  suite finie d'instructions d'affectation

  chacune modifie l'état courant

  exécutées séquentiellement

  elles peuvent être itérées par des boucles "while"

  elles peuvent être exécutées conditionnellement à l'aide de "if ... then ... else".


Ocaml: Un langage fonctionnel
impératif / fonctionnel
Programmation “fonctionnelle”

-  Approche - Pas -  Pas -  Pas -  Pas -  Un

par le haut: le langage est conçu comme un outil pour spécifier les algorithmes

d'état

d'affectation

d'instruction

de boucle

programme : une expression

d'un programme: évaluation de l'expression


-  Exécution

Ocaml: Un langage fonctionnel
impératif / fonctionnel
Exemple

-  Impératif:int square (int n) {



int s;



s = n*n;



return(s); }

let square = fun x -> x*x;;

let square x = x*x;;


-  Fonctionnel


Ocaml: Un langage fonctionnel
Avant toutes choses
Lancer Objective Caml: commande ocaml $ $ ocaml # Sortir de Objective Caml: taper #quit;; ou ctrl D ###quit;; $

Ocaml: Un langage fonctionnel
Pas de différence entre fonction / objet simple
Une fonction est une expression et à ce titre peut être elle-même l'argument ou le résultat d'une autre fonction (ordre supérieur). Récursivité: remplace les boucles

Les expressions
Programme = Expression
Définies par une syntaxe et une sémantique
- 

Syntaxe concrète: les caractères ASCIIcomposant l'expression Syntaxe abstraite: la structure profonde, l'arbre syntaxique

- 

Possèdent un type (ensemble de valeurs) et une valeur
-  - 

Sémantique statique: le type de l'expression Sémantique dynamique: la valeur de l'expression

Adéquation entre les 2 sémantiques: le type de l'expression est identique à celui de sa valeur

Les expressions
Exécution = Evaluation
Résultat d'uneévaluation : val nom : type = valeur
- : type = valeur

Exemples :
# 4/(2*2);; - : int = 1 # fun x->x*x;; - : int -> int =

Les expressions
Evaluation
Evaluation en 3 temps analyse syntaxique
production de l'arbre syntaxique si syntaxe correcte
2+3 et 2 + “oiseau” sont syntaxiquement correctes 2+ ne l'est pas

analyse statique
production du type si l'expression est typable
2+3 esttypable, de type int 2 + ”oiseau” ne l'est pas

évaluation proprement dite
production de la valeur si le programme ne boucle pas

Les expressions Définitions
Nommer une expression
let nom = expr
#let x = 2*5+1;; val x : int = 11 #let pi = 3.1416;; val pi : float = 3.1416
l

#let square = fun x ->x*x;; val square : int -> int = #let square x = x*x;; val square : int -> int =

Lesexpressions Définitions
Nommer une expression
let nom = expr
#let x = 2*5+1;; val x : int = 11 #x;; - : int = 11
l

#let square = fun x ->x*x;; val square : int -> int = #square;; - : int -> int =

Les expressions
Définitions locales
Nommer localement
let nom = expr1 in expr2 #let x = 2*5+1;; val x : int = 11 #let x = 2 in x*x;; - : int = 4
l

#x;; - : int = 11

Les expressionsDéfinitions locales
Nommer localement let nom = expr1 in expr2
#let a = 1 and b = 2 in 2*a+b;; - : int = 4 #let a = 1 in let b = 2*a in b+a;; - : int = 3 #let a = 1 and b = 2*a in b+2+a;; Unbound value

Les types de base
int et float
int : + * / mod float : +. -. *. /. ** sqrt cos sin tan asin atan log exp
#3.45;; - : float = 3.45 #3.45E10;; - : float = 34500000000. #3.45e10;; -: float...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS