Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Question about camlp4
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Frederic Tronel <Frederic.Tronel@i...>
Subject: Re: [Caml-list] Question about camlp4
Daniel de Rauglaudre wrote:
> 
> Salut,
> 
> > Thanks for your prompt answer.
> > Why not adding a special construction for building lists directly ??
> 
> Chais pas si c'est intentionnel de ta part, mais tu m'as juste répondu
> à moi personnellement et pas dans la mailing list, alors je te réponds
> en français, s'pas...

J'ai repondu trop vite.


> 
> La réponse est qu'il y n'y a qu'une seule représentation pour les listes.
> Le type des listes est équivalent à quelque chose du genre:
>       type 'a mylist =
>           Nil
>         | Cons of 'a * 'a mylist
> 
> Toi, ce que tu demandes, c'est que ça puisse être:
>       type 'a mylist =
>           Nil
>         | Cons of 'a * 'a mylist
>         | List of 'a list
> 
> Du coup, la liste [1; 2] aurait plusieurs représentations possibles:
>       Cons (1, Cons (2, Nil))
>       List [1; 2]
>       Cons (1, List [2])
> 
> Bien sûr, on pourrait faire en sorte que <:expr< $list:x$ >> soit un
> raccourci de mon List.fold_left. Ça marcherait en position d'expression
> mais pas en position de pattern, comme par exemple:
>        function <:expr< $list:e$ >> -> e
> 
> car il faudrait que le pattern matching extraie la liste e constituée
> des élements de la liste, liste qui n'existe pas forcément, si le
> noeud d'arbre de syntaxe est juste un Cons de deux variables, par
> exemple.

D'accord, j'ai compris. Est-il possible que cela soit indique dans 
la doc (ca l'est peut-etre, mais je ne l'ai pas vu).

Frederic.
-------------------
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