Le typage de CAML XI
Quand et comment généraliser ?
au moment des déclarations
let
idf
=
exp
1
in
exp
2
On modifie donc un peu la règle de typage des déclarations.
Expression expansive:
effectuant des effets de bord pouvant invalider le typage. En CAML, expressions de la forme
e
1
e
2
.
Env
|-
exp
1 :
t
1
Si
exp
1 NON expansive,
généraliser
t
1
en
st
1
=
generaliser
Env
(
t
1
), sinon
st
1
=
t
1
Ajout du type obtenu à l'environnement
ë
(
x
:
st
1
)
<|
Env
û
|-
exp
2 :
ty
2
L'environnement global est inchangé
Env
|-
exp
1
:
t
1
ë
(
idf
:
st
1
)
<|
Env
û
|-
exp
2
:
t
2
Env
|-
let
idf
=
exp
1
in
exp
2
:
t
2