Langage de Programmation 2   (LP2  ) - RICM3   Cours 4   Modules,  foncteurs, Input Output
45 pages
Français

Langage de Programmation 2 (LP2 ) - RICM3 Cours 4 Modules, foncteurs, Input Output

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
45 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Langage de Programmation 2 (LP2)Langage de Programmation 2 (LP2)RICM3Cours 4Modules, foncteurs, Input OutputPascal LafourcadePolytech2009 - 20101 / 73Langage de Programmation 2 (LP2)La dernière fois◮ Type Produit◮ Évaluation et valeurs◮ Type Nommé◮ Compléments2 / 73Langage de Programmation 2 (LP2)PlanCompilationModulesGénéralitésCompilation séparéeExemple de moduleFoncteursInput OutPutConclusion3 / 73Langage de Programmation 2 (LP2)CompilationCompilation simpleOcamlproduit du bytecode :◮ indépendant de la machine◮ interprété par une machine virtuelleOcamlproduit du code natif (machine dépendant).5 / 73Langage de Programmation 2 (LP2)CompilationHello world*Les doubles point-virgules sont facultatifs dans un code source.file.ml -> file.cmi file.cmo outputlet x=42let main =print_string "Hello World! \n";print_int(x);print_newline()$ ocamlc file.ml -o output$ ./outputHello World!42$ 7 / 73a.outLangage de Programmation 2 (LP2)CompilationCompilation vers du bytecodeLe code source ne doit pas contenir de directives du toplevel.#!/usr/bin/ocamlrunCode source réparti dans plusieur fichiers (main.ml, types.ml,fifo.ml ...) appelés unité ou module.9 / 73Langage de Programmation 2 (LP2)ModulesGénéralitésPrincipes générauxObjectifs de la modularité◮ fourniture des fonctionnalités : indépendance entre fournisseuret utilisateur◮ rôle pivot de l’interface = joue le rôle de contrat◮ l’utilisateur n’a pas à connaître les ...

Informations

Publié par
Nombre de lectures 37
Langue Français

Extrait

Langage de Programmation 2 (LP2)
Langage de Programmation 2 (LP2)
RICM3
Cours 4
Modules, foncteurs, Input Output
Pascal Lafourcade
Polytech
2009 - 2010
1 / 73Langage de Programmation 2 (LP2)
La dernière fois
◮ Type Produit
◮ Évaluation et valeurs
◮ Type Nommé
◮ Compléments
2 / 73Langage de Programmation 2 (LP2)
Plan
Compilation
Modules
Généralités
Compilation séparée
Exemple de module
Foncteurs
Input OutPut
Conclusion
3 / 73Langage de Programmation 2 (LP2)
Compilation
Compilation simple
Ocaml
produit du bytecode :
◮ indépendant de la machine
◮ interprété par une machine virtuelle
Ocaml
produit du code natif (machine dépendant).
5 / 73Langage de Programmation 2 (LP2)
Compilation
Hello world*
Les doubles point-virgules sont facultatifs dans un code source.
file.ml -> file.cmi file.cmo output
let x=42
let main =
print_string "Hello World! \n";
print_int(x);
print_newline()
$ ocamlc file.ml -o output
$ ./output
Hello World!
42
$ 7 / 73
a.outLangage de Programmation 2 (LP2)
Compilation
Compilation vers du bytecode
Le code source ne doit pas contenir de directives du toplevel.
#!/usr/bin/ocamlrun
Code source réparti dans plusieur fichiers (main.ml, types.ml,
fifo.ml ...) appelés unité ou module.
9 / 73Langage de Programmation 2 (LP2)
Modules
Généralités
Principes généraux
Objectifs de la modularité
◮ fourniture des fonctionnalités : indépendance entre fournisseur
et utilisateur
◮ rôle pivot de l’interface = joue le rôle de contrat
◮ l’utilisateur n’a pas à connaître les détails de la réalisation
◮ le fournisseur se concentre sur les fonctions promises
◮ abstraction des données
◮ garantie des invariants : il suffit que chaque fonction de
l’interface respecte ces invariants
11 / 73Langage de Programmation 2 (LP2)
Modules
Généralités
Modularité en Ocaml
◮ interface = signature S
◮ réalisation = module M : S
◮ sous-modules : notation pointée M1.M2.M3
(idem signatures)
Accés par notation pointée : List.hd
12 / 73Langage de Programmation 2 (LP2)
Modules
Généralités
Modules et fichiers
◮ cohérence module-fichier :
◮ fichier.ml⇒ module,
◮ fichier.mli⇒ signature,
◮ possibilité de déclarer des (sous-)modules et des
(sous-)signatures dans un fichier
◮ correspondance fichier.ml⇒ module Fichier
◮ correspondance fichier.mli⇒ signature Fichier
Attention aux majuscules!
Les noms de modules, d’exceptions et de constructeurs
commencent par des majuscules.
13 / 73Langage de Programmation 2 (LP2)
Modules
Généralités
Interface : .mli
.mli donne .cmi
file.ml file.mli
type euros = int
type carte type carte
= number of int | color → = number of int | color
let p1 = fun (x,y) -> x → val p1 : int -> ’b -> int
exception → exception
Interface
◮ moins générale : val p1 : ’a -> ’b -> ’a
◮ omission de valeurs et de type (type <abstr> et masquage
pour encapsulation)
Ne donne pas d’informations sur le TAD
Astuce : ocamlc -i file.ml donne une version du .mli 14 / 73

  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents