Version française
Home     About     Download     Resources     Contact us    
Browse thread
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Michel.Levy@i...
Subject:

Pouvez-vous, je vous prie, répondre à quelques questions à propos de camllight

1) L'expression
let rec x = 1 :: x ;;
est de type int list. Son exécution crée-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éfinitions de fonction) is
implementation-dependant.

2) Pourquoi le typeur accepte la définition récursive précédente mais

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

let rec env_étendu =
(déf.Nom, Val_fermeture
         { Définition = liste_de_cas ; Environnement = env_étendu}) ::
env_courant

sous le prétexte que déf.Nom n'est pas acceptable dans une définition récursive

22)accepte par contre

let nom = déf.Nom in
let rec env_étendu =
(nom, Val_fermeture
         { Définition = liste_de_cas ; Environnement = env_étendu}) ::
env_courant


Remarque : mon but était d'éviter les types mutables pour représenter les
environnements.

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