From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id QAA00659; Fri, 2 Aug 2002 16:52:44 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f 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 QAA00602 for ; Fri, 2 Aug 2002 16:52:43 +0200 (MET DST) Received: from shiva.jussieu.fr (shiva.jussieu.fr [134.157.0.129]) by concorde.inria.fr (8.11.1/8.11.1) with ESMTP id g72Eqg512394 for ; Fri, 2 Aug 2002 16:52:43 +0200 (MET DST) Received: from ibm3.cicrp.jussieu.fr (ibm3.cicrp.jussieu.fr [134.157.15.3]) by shiva.jussieu.fr (8.12.5/jtpda-5.4) with ESMTP id g72EqgjR098434 for ; Fri, 2 Aug 2002 16:52:42 +0200 (CEST) Received: from ibm1.cicrp.jussieu.fr (ibm1.cicrp.jussieu.fr [134.157.15.1]) by ibm3.cicrp.jussieu.fr (8.8.8/jtpda/mob-V8) with ESMTP id QAA21272 for ; Fri, 2 Aug 2002 16:50:47 +0200 Received: from localhost (fernande@localhost) by ibm1.cicrp.jussieu.fr (8.8.8/jtpda/mob-v8) with SMTP id QAA72858 for ; Fri, 2 Aug 2002 16:50:00 +0200 Date: Fri, 2 Aug 2002 16:49:59 +0200 (DST) From: Diego Olivier Fernandez Pons To: caml-list@inria.fr Subject: [Caml-list] Streams In-Reply-To: <4.1.20020706000345.009f9610@pop3.btclick.com> Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-2036527359-1533447138-1028299799=:55812" X-Antivirus: scanned by sophie at shiva.jussieu.fr Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. ---2036527359-1533447138-1028299799=:55812 Content-Type: TEXT/PLAIN; charset=iso-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Bonjour, Dans le cadre de la librairie de structures de donn=E9es EDiSon (Efficient Data Structures, Okasaki 2000) que je suis en train de porter et d'adapter (pour l'instant 500k, pr=E9release pr=E9vue en septembre), j'ai r=E9alis=E9 plusieurs types de listes =E0 =E9valuation retard=E9e. La premi=E8re remarque est que j'ai eu beaucoup de mal =E0 trouver de la documentation =E0 ce sujet : - une impl=E9mentation tr=E8s simple dans ML for the working programmer (Paulson 1991, 1996) - une impl=E9mentation par Pierre Weiss pour le probl=E8me des 8 dames sur l'=E9chiquer dans la librairie d'exemples d'Objective Caml - l'impl=E9mentation de Daniel de Rauglaudre, cette derni=E8re ayant l'inconv=E9nient de s'appuyer sur des fonctions non document=E9es de Caml, mais il faut reconna=EEtre que le code est parfaitement lisible et que l'on devine =E0 peu pr=E8s ce qui se passe. C'est de surcro=EEt la seule impl=E9mentation =E0 prendre en compte les fonctions g=E9n=E9ratrices et la concat=E9nation - un article de Wadler (1997) sur l'impl=E9mentation de l'=E9valuation retard=E9e dans les langages stricts, qui a la particularit=E9 d'enfoncer des portes ouvertes (ne consid=E9rant que les deux impl=E9mentations traditionnelles) et de parler d'une impl=E9mentation particuli=E8rement efficace en SML/NJ qui serait en cours de d=E9veloppement, or la version CVS de SML/NJ (110.41) ne comporte rien de tout cela, sinon le traditionnel module Lazy Enfin le rapport de recherche de Didier Remy et Daniel de Rauglaudre (1992) n'est disponible que sous forme papier. Voici donc mes questions : - serait-il possible de documenter un peu le module obj ? Peut-=EAtre est-ce une mauvaise id=E9e, dans la mesure o=F9 cela pourrait permettre =E0 des utilisateurs non avertis d'=E9crire du code dangereux j'ai =E9crit une version de listes =E0 =E9valuation retard=E9e qui simule l= e fonctionnement des streams de Caml (fichier joint streamVI.ml) type=20 'a stream =3D { mutable data : 'a streamCell } and 'a streamCell =3D | Nil | Cons of 'a * 'a stream | Append of 'a stream * 'a stream | Delayed of (unit -> 'a stream) | Generator of int * (int -> int) * (int -> 'a) L'inconv=E9nient est que l'on perd le polymorphisme de la liste vide. N'y a t-il aucun moyen de s'en sortir en utilisant du Caml conventionnel ? ensuite je voudrais abstraire le type int du constreur Generator afin que l'utilisateur puisse indicer sa fonction g=E9n=E9ratrice par le type de son choix : | Generator of 'k * (k' -> 'k) * ('k -> 'a) seulement si je d=E9clare un type ('k, 'a) streamCell alors on ne peut plus utiliser des listes d'indexes de type diff=E9rent alors qu'elles sont "logiquement" compatibles puisque le type 'k ne sert qu'a construire les nouvelles valeurs de type 'a comment limiter "l'=E9tendue" du type 'k au seul constructeur [Generator] ? - la forme sp=E9ciale lazy ressemble tr=E8s fortement =E0 la fonction lazy_ ci-dessous mis =E0 part qu'elle n'=E9value pas ses arguments (* OCaml 3.04 *) let lazy_ =3D function x -> ref (Lazy.Delayed (function () -> x)) Quels seraient les inconv=E9nients (th=E9oriques ? pratiques ?) d'une forme sp=E9ciale [uneval_] qui serait =E9quivalente =E0 function () ->, autrement dit uneval : 'a -> (unit -> 'a) uneval_ x <=3D> function () -> x =20 Diego Olivier ---2036527359-1533447138-1028299799=:55812 Content-Type: APPLICATION/octet-stream; name="streams.tar.bz2" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: streams 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 QA== ---2036527359-1533447138-1028299799=:55812-- ------------------- 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