From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id KAA31560; Fri, 4 Apr 2003 10:46:07 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f 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 KAA29493 for ; Fri, 4 Apr 2003 10:46:06 +0200 (MET DST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id h348k1521010; Fri, 4 Apr 2003 10:46:01 +0200 (MET DST) Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id KAA31411; Fri, 4 Apr 2003 10:46:00 +0200 (MET DST) From: Pierre Weis Message-Id: <200304040846.KAA31411@pauillac.inria.fr> Subject: Re: [Caml-list] How can I check for the use of polymorphic equality? In-Reply-To: <4.3.2.7.2.20030403125225.04a69d30@localhost> from Chris Hecker at "Apr 3, 103 12:53:56 pm" To: checker@d6.com (Chris Hecker) Date: Fri, 4 Apr 2003 10:46:00 +0200 (MET DST) Cc: pierre.weis@inria.fr, jyh@cs.caltech.edu, caml-list@inria.fr X-Mailer: ELM [version 2.4ME+ PL28 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Spam: no; 0.00; pierre:01 weis:01 caml-list:01 debugging:01 generic:01 predicate:01 pervasives:01 m-x:01 chris:01 cristal:01 caml:01 equality:01 emacs:01 polymorphic:01 simpler:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk > >You probably will catch every reasonable usage of ( = ) that way... > >Simple, no ? > > But that a) requires you to put it in scope at the top of each file, Absolutely, but remember it is just a debugging phase, not a production state. > and more importantly b) means you can't use = anywhere, doesn't it? No: it means you have to do something more than just writing = when you need to call the predefined generic equality. You first have to think if there is not another predicate that is not more appropriate to the situation, and if there is none, you just have to insert a mere let ( = ) = Pervasives.( = ) in before each relevant occurrence of ( = ). Those single lines can be easily removed after proper debugging (use an emacs keyboard macro + a M-x grep -n -e ... *.ml). Still sounds rather simple and elegant to me... > That seems kinda strong for the very specific check, and the > abstract type thing (which was going to be my suggestion as well, > but I forgot you could do it with Obj all in caml!) is both > localized and only catches the ones you care about. > > Chris No doubt that you could use an abstract type trick (possibly using the Obj module :(), if you fill more comfortable with this trick. The hack I proposed is just simpler, only based on simple core language features, and has the additional advantage to force you to have a look at all occurrences of ( = ) in your source code, which in my mind is a desirable side effect. Best regards, Pierre Weis INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis/ ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners