Précédent Index Suivant



Le typage de CAML VI



Fonctions récursives
une fonction récursive est une expression fonctionnelle déclarée par let rec.
let rec f = function x -> corps
#let rec fact1 = function n ->
     if n <= 0 then 1 
     else n * fact1 (n-1);;
fact1 : int -> int = <fun>

Typage dans Env
  1. Choisir deux nouvelles variables de type t1 et t2 pour désigner le type de f puis étendre Env Env' = ë (f:t1 ® t2), (x:t1)<|  Env û

  2. typer corps (Env'  |-  corps : ty2)
  3. Faire le bilan des contraintes (t1 = t1 et t2 = t2)
(Rec)
ë (f:t1 ® t2), (x:t1)<|  Env û  |-  corps : t2
Env  |-  rec f = function x -> corps : t1 ® t2


Précédent Index Suivant