From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: weis Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id IAA16215 for caml-redistribution; Tue, 12 May 1998 08:40:46 +0200 (MET DST) Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id DAA19573 for ; Tue, 12 May 1998 03:42:46 +0200 (MET DST) Received: from kurims.kurims.kyoto-u.ac.jp ([130.54.16.1]) by nez-perce.inria.fr (8.8.7/8.8.5) with ESMTP id DAA24738 for ; Tue, 12 May 1998 03:42:41 +0200 (MET DST) Received: from localhost (safran.kurims.kyoto-u.ac.jp [130.54.16.91]) by kurims.kurims.kyoto-u.ac.jp (8.8.8/3.6W) with ESMTP id KAA02847; Tue, 12 May 1998 10:42:02 +0900 (JST) To: Pascal.Poizat@irin.univ-nantes.fr Cc: caml-list@inria.fr Subject: Re: (*)CaML -> SML ? / SML -> Caml ? In-Reply-To: Your message of "Tue, 05 May 1998 13:06:06 +0000" <354F0EBE.A96BE3BF@irin.univ-nantes.fr> References: <354F0EBE.A96BE3BF@irin.univ-nantes.fr> X-Mailer: Mew version 1.92 on Emacs 20.2 / Mule 3.0 (MOMIJINOGA) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <19980512104217Q.garrigue@kurims.kyoto-u.ac.jp> Date: Tue, 12 May 1998 10:42:17 +0900 From: Jacques GARRIGUE X-Dispatcher: imput version 971024 Sender: weis [ English summary at the end ] From: Pascal Poizat > Je me demandais s'il y avait un outil du style (*)CaML vers SML en > passant > par CaMLp4 par exemple ? Je pense qu'il faut aussi ne pas utiliser > certains traits > de CamlLight... Pour la partie purement syntaxique j'ai ecrit ce genre de chose il y a deux ans, pour Caml Special Light. Je pense que ce serait relativement facile a` adapter, puisque c'est un simple pretty printer ajouter par dessus le compilateur CSL. Je traduis la syntaxe abstraite directement, mais j'ai aussi besoin du typage pour manipuler les enregistrements par exemple. Le resultat (syntaxique) est plutot joli (meme si je prefere la version caml). Mais je n'ai pas traite': * les eqtype. En SML on distingue les types avec egalite' des types sans. Un casse-tete a` ajouter automatiquement. * les annotations de types. Les variables n'ont pas le meme sens en SML. Et comme le fait remarquer Daniel de Raglaudre, la difficulte' est du cote' semantique. La bibliotheque standard de SML n'est pas la meme, et les differences sont telles que je ne vois pas d'autre solution que de soit ecrire pour SML, en utilisant ses bibliotheques (mais alors pourquoi ne pas ecrire directement en SML), soit definir une bibliotheque de compatibilite' qui reproduit l'ensemble de la bibliotheque standard de Caml. Exemples de points particulierement difficile a` traiter: * L'egalite' n'est pas la meme en caml et en SML. Si a et b contiennent des structures mutables, alors a = b peut donner un resultat different dans les deux langages. Ca a des consequences partout. * Les fonctions prenant deux listes de meme longueur dans la bibliotheque standard de SML (l'equivalent de List.combine ou List.iter2) n'echouent pas si les listes sont de longueur differente. * Et une multitude d'autres petits choix a` faire dresser les cheveux sur la tete d'un camleur. Si le but est d'utiliser les bibliotheques de SML, une autre approche peut-etre plus simple serait de modifier directement le parser d'ocaml (camlp4) pour qu'il accepte une syntaxe proche de celle de SML. Meme chose, on ne peut pas obtenir une traduction parfaite, mais avec ca et un minimum de modification du code source on pourrait obtenir une facon rapide de traduire entre les deux langages. Le pretty-printer de camlp4 permettrait d'obtenir du code caml en sortie. Il faudrait aussi une bibliotheque de compatibilite'. Jacques [ English ] I wrote a translater from Caml to SML two years ago, but this was only syntactic. A real translater would be a very hard task since the two languages differ both in their type systems and semantics. If one wants to use an SML library in Caml, a more reasonable approach would be to translate it in Caml. It would be nice to have semi-automatic tools to do that.