l> Site prof TD – email TD : geoffroy(at)irif.fr
Dans utop:
#install_printer pp;;
(* où pp est un prettyprinter
* ça permet d'utiliser le prettyprinter automatiquement
*)
#quit;; (* ça quitte omg! *)
Fichier .ocamlinit
permet de lancer des directives automatiquement au lancement de utop.
Redéfinition d’opérateur :
let ( + ) e1 e2 = Add (e1, e2)
Par exemple.
type 'a rel = 'a -> 'a -> bool
(* Relation *)
(* Comme ça maintenant on peut faire ça *)
let equal : t rel = (* code ici*)
;;
(* et ça évite de faire ça *)
let equal : t -> t -> bool = (* code ici *)
;;
Écriture de tests en OCaml (librairie externe) :
let%expect_test
Pour suivre les conseils du compilo après un dune build
par exemple
$ dune promote
ça va promouvoir les résultats des tests et remplacer les pré-existants
Pour lancer les tests :
$ dune runtests
L_{s} : Langage sujet/méta (OCaml)
L_{o} : Langage objet (celui que l’on code)
Jalon 2 :
Il y a des dessins similaires dans le cours du parser askip
- \sigma c’est l’environnement
- \rho c’est la mémoire
- quand des cas ne sont pas gérés ce sont des
failwith
- \Downarrow c’est une évaluation genre
f a = b
= a \Downarrow b
- “f est de type A \ra B” = f : A \ra B avec A le domaine (arguments) et B le codomaine (body).
- [\alpha \backslash t'] \RA \alpha est remplacé par t'
- \bullet = contexte vide
Arité = Arguments
Pour vérifier qu’une fonction est terminale (tail
) il va falloir dire que par défaut, elles le sont et au fur et à mesure lors du parcours du programme les marqués comme faux si on se rend compte que ce n’est pas le cas.
Si j’ai bien compris, c’est pas le cas quand le “return?” appelle une fonction