Re: string vs vect + GC question

Michel Levy (Michel.Levy@imag.fr)
Mon, 19 Feb 1996 15:57:09 +0100

Message-Id: <v01530537ad4e236a223a@[129.88.38.40]>
Date: Mon, 19 Feb 1996 15:57:09 +0100
To: caml-list@pauillac.inria.fr
From: Michel.Levy@imag.fr (Michel Levy)

Pouvez-vous, je vous prie, r=E9pondre =E0 quelques questions =E0 propos de c=
amllight

1) L'expression
let rec x =3D 1 :: x ;;
est de type int list. Son ex=E9cution cr=E9e-t-elle une fermeture ?
Je lis d'ailleurs dans le "Doc et user's manual" : the behavior of other
forms of let rec (formes autres que des d=E9finitions de fonction) is
implementation-dependant.

2) Pourquoi le typeur accepte la d=E9finition r=E9cursive pr=E9c=E9dente mai=
s

21)refuse la modification suivante du programme minicaml (cf Le langage
caml de Pierre Weiss et Xavier Leroy p 352) :

let rec env_=E9tendu =3D
(d=E9f.Nom, Val_fermeture
{ D=E9finition =3D liste_de_cas ; Environnement =3D env_=E9tendu}) =
::
env_courant

sous le pr=E9texte que d=E9f.Nom n'est pas acceptable dans une d=E9finition =
r=E9cursive

22)accepte par contre

let nom =3D d=E9f.Nom in
let rec env_=E9tendu =3D
(nom, Val_fermeture
{ D=E9finition =3D liste_de_cas ; Environnement =3D env_=E9tendu}) =
::
env_courant

Remarque : mon but =E9tait d'=E9viter les types mutables pour repr=E9senter =
les
environnements.

Michel Levy
L.S.R.
BP53x - 38041 Grenoble cedex - France
Tel : 76827246
e.mail : Michel.Levy@imag.fr