[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 1995-09-29 (08:04) |
From: | Christophe Raffalli <raffalli@c...> |
Subject: | Re: Caml Special Light 1.07 |
>> - 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 !