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 JAA11140 for caml-redistribution; Mon, 3 Feb 1997 09:41:36 +0100 (MET) 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 JAA11036 for ; Mon, 3 Feb 1997 09:38:10 +0100 (MET) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.7.6/8.7.3) with ESMTP id JAA05282; Mon, 3 Feb 1997 09:38:09 +0100 (MET) Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id JAA11032; Mon, 3 Feb 1997 09:38:09 +0100 (MET) From: Pierre Weis Message-Id: <199702030838.JAA11032@pauillac.inria.fr> Subject: Re: Operateurs < et = In-Reply-To: from Valentin Bonnard at "Feb 1, 97 08:03:31 pm" To: bonnardv@pratique.fr (Valentin Bonnard) Date: Mon, 3 Feb 1997 09:38:09 +0100 (MET) Cc: caml-list@inria.fr MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: weis > Pourquoi n'est il pas possible de definir l'egalite et l'ordre > sur un type en Caml ? Bien sur je peut definir des fonctions > est_egal et inferieur_a mais comme les fonctions du module eq > sont polymorphes je voudrait definir ces fonctions sur mes > types (exemple: le type fraction). Ceci est une autre histoire, en ce sens que c'est tre`s difficile a` imple'menter et a` typer. Si vous savez le faire dites le nous. > De plus la notion d'ordre physique pourrait etre > interressante; de meme qu'il y a deux comparaisons, une > correcte et une rapide = et ==, il pourrait y avoir deux > ordre, un correct (2/4 < 1/1) et un artificiel (un ordre > quelconque defini y compris sur les fonctions). > > Cet ordre rapide pourrai etre la comparaison des addesses, > la comparaison des representations (memcmpr) ou quelque > chose comme ca. Le proble`me est que la comparaison des adresses fait l'hypothe`se que les objets ne se de'placent pas dans la me'moire, ce qui n'a aucune raison d'e^tre vrai dans toutes les imple'mentations, et qui est faux en particulier en Caml Light et O'Caml. > Abstract: why isn't it possible to define the equalty and > order over a user defined type ? (2,4 < 1,1 but 2/4 < 1/1) Because we don't know how to implement it. Design a type system and a compiler for that, then publish an article in POPL. > Also like there are = and ==, why isn't there a fast > physical comparison defined for all types (even functions) ? As above, we don't know how to implement it, particularly when objects may move (due to the memory manager, and the fast generational garbage collector as in Caml Light and O'Caml). Pierre Weis INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis