From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id AAA00914 for caml-redistribution; Sat, 12 Jun 1999 00:53:24 +0200 (MET DST) Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id VAA30464 for ; Wed, 2 Jun 1999 21:02:13 +0200 (MET DST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.8.7/8.8.7) with ESMTP id VAA12779; Wed, 2 Jun 1999 21:02:10 +0200 (MET DST) Received: (from xleroy@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id VAA29600; Wed, 2 Jun 1999 21:02:10 +0200 (MET DST) Message-ID: <19990602210210.48838@pauillac.inria.fr> Date: Wed, 2 Jun 1999 21:02:10 +0200 From: Xavier Leroy To: Vyskocil Vladimir , Caml list Subject: Re: Constante NIL References: <37529AB8.B306AD5F@math.unice.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Mailer: Mutt 0.89.1 In-Reply-To: <37529AB8.B306AD5F@math.unice.fr>; from Vyskocil Vladimir on Mon, May 31, 1999 at 04:20:40PM +0200 Sender: weis > N'est t'il pas concevable de rajouter a Objectif Caml une constante > NIL, UNDEF ou je sais pas trop comment la nommer dont la valeur serait > '_a. Ceci permettrait d'initialiser "par defaut", par exemples, > les variables d'instances d'une classe lorsque l'on ne possede aucune > valeur par defaut du bon type. Je sais qu'il y'a toujours la possibilite > d'utiliser le type 'a option mais ca devient lourd a gerer... Le problème de la constante "nil" est d'assurer qu'elle n'est pas utilisée comme une valeur "normale" du type en question. Cela signifierait générer des tests à "nil" avant chaque accès dans une structure de données (de la même manière que les compilateurs Java doivent tester si les objets ne sont pas "null"). C'est coûteux en taille de code et en temps d'exécution, et diminue la robustesse des programmes. L'utilisation du type 'a option est certes lourde mais a le mérite de rendre ces tests explicites et optimisables par le programmeur. Quant à utiliser Obj.magic, je le déconseille car le programme peut alors très bien planter s'il utilise par erreur la valeur "nil" comme une valeur normale. (Oui, j'ai essayé; et oui, mon code a fini par planter à cause de cela.) - Xavier Leroy