From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: weis Received: (from weis@localhost) by pauillac.inria.fr (8.6.10/8.6.6) id JAA18704 for caml-redistribution; Fri, 29 Sep 1995 09:04:55 +0100 Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.6.10/8.6.6) with ESMTP id QAA06613; Thu, 28 Sep 1995 16:33:21 +0100 Received: from muppet42.cs.chalmers.se (raffalli@muppet42.cs.chalmers.se [129.16.225.143]) by concorde.inria.fr (8.6.10/8.6.9) with ESMTP id QAA24844; Thu, 28 Sep 1995 16:33:21 +0100 Received: (from raffalli@localhost) by muppet42.cs.chalmers.se (8.6.11/8.6.9) id QAA02288; Thu, 28 Sep 1995 16:33:03 +0100 Date: Thu, 28 Sep 1995 16:33:03 +0100 Message-Id: <199509281533.QAA02288@muppet42.cs.chalmers.se> From: Christophe Raffalli To: Xavier.Leroy@inria.fr CC: caml-light@pauillac.inria.fr, caml-list@pauillac.inria.fr In-reply-to: <199509281510.QAA05926@pauillac.inria.fr> (message from Xavier Leroy on Thu, 28 Sep 1995 16:10:02 +0100 (MET)) Subject: Re: Caml Special Light 1.07 Sender: weis >> - where rec a disparu ? > Exact. "where" aussi, d'ailleurs. Redondant avec "let" et "let rec". J'aimerai bien qu'il revienne : cela rend souvent le code plus agreable a lire. mais peu-etre qu'il faudrait ajouter un "do" "end" do .... where [rec] .... end car le scope de where etait un peu embetant a manipuler. >> - fun ne marche qu'avec une seul cas de matching ? > Il suffit d'ecrire a la place: > > let f x y z = > match (x,y,z) with > (..., ..., ...) -> > | (..., ..., ...) -> > >C'est aussi efficace que le "fun" a plusieurs cas en Caml Light: le >compilateur Caml Special Light n'alloue pas le n-uplet (x,y,z). Si c'est aussi efficace, il serait utile que le tool convert fasse cette transformation automatiquement (meme pour les fun a un seul cas). >> Mais alors pourquoi ne pas ecrire les >> constructeurs a plus d'un argument sous forme "uncurried" > >Ca devient une question de syntaxe uniquement. Cela aiderait a eliminer la confusion entre type b = B of int * int (2 arguments entiers) type b = B of (int * int) (1 argument qui est une paire) De plus ca faciliterait le portage des programmes caml-light : on pourrait ecrire type b = B of int & int pour B avec deux arguments (le & est un choix arbitraire... ) et type b = B of int * int pour B avec un seul argument Ainsi les vieux programmes caml-light tournerait (avec une perte d'efficacite) sans que l'on ait a modifier les matchings du genre "B c -> ..." >> (et aussi pouquoi >> ne pas autoriser l'application partielle d'un constructeur) ? > >Je ne sais pas si ca servirait tres souvent. J'appelle souvent map ou it_list avec un constructeur partiellement ou pas du tout applique, et c'est un peu penible d'avoir a ecrire (fun x -> B x) a la place de B ! Bien sur cela est loin d'etre important ! Christophe. PS: for the parser problem, I just realised that $1 in a semantic-action could be a function and So i could rewrite my parser quite easely with camlyacc which therefore is not only a context-free parser !