From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by yquem.inria.fr (Postfix) with ESMTP id 07E2EBC4E for ; Thu, 10 Aug 2006 20:32:38 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by nez-perce.inria.fr (8.13.6/8.13.6) with ESMTP id k7AIWbZA025487 for ; Thu, 10 Aug 2006 20:32:37 +0200 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 UAA31111 for ; Thu, 10 Aug 2006 20:32:36 +0200 (MET DST) Received: from out4.smtp.messagingengine.com (out4.smtp.messagingengine.com [66.111.4.28]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id k7AIWW6Z002242 for ; Thu, 10 Aug 2006 20:32:36 +0200 Received: from frontend3.internal (frontend3.internal [10.202.2.152]) by frontend1.messagingengine.com (Postfix) with ESMTP id A3CD5D94E73; Thu, 10 Aug 2006 14:32:24 -0400 (EDT) Received: from heartbeat1.messagingengine.com ([10.202.2.160]) by frontend3.internal (MEProxy); Thu, 10 Aug 2006 14:32:25 -0400 X-Sasl-enc: geAotapUQsPgj7PyjeKJ0zYZU69XZoei0msZxhmNU2Ui 1155234744 Received: from [172.16.112.115] (burnham.ljcrf.edu [192.231.106.2]) by mail.messagingengine.com (Postfix) with ESMTP id EFBFC6F4B; Thu, 10 Aug 2006 14:32:23 -0400 (EDT) Date: Thu, 10 Aug 2006 11:32:10 -0700 (PDT) From: Martin Jambon X-X-Sender: martin@localhost To: =?UTF-8?Q?Error404?= Cc: caml-list@inria.fr Subject: Re: [Caml-list] Streams In-Reply-To: <5ebb1214.308e7ea.44db0fae.68763@o2.pl> Message-ID: References: <5ebb1214.308e7ea.44db0fae.68763@o2.pl> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-2004934518-1155234691=:27674" Content-ID: X-j-chkmail-Score: MSGID : 44DB7BC5.000 on nez-perce : j-chkmail score : XXXX : 0/20 4 X-j-chkmail-Score: MSGID : 44DB7BC0.000 on concorde : j-chkmail score : XXXXX : 0/20 5 X-Miltered: at nez-perce with ID 44DB7BC5.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at concorde with ID 44DB7BC0.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; rec:01 syntax:01 mutable:01 rec:01 iter:01 iter:01 1977:98 2006,:98 wrote:01 caml-list:01 jambon:01 jambon:01 readable:01 lazy:02 lazy:02 X-Attachments: name="lizt.ml" name="lizt.ml" X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=FROM_ENDS_IN_NUMS autolearn=disabled version=3.0.3 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-2004934518-1155234691=:27674 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; format=flowed Content-ID: On Thu, 10 Aug 2006, Error404 wrote: > Hi, > > I'm looking for some streams related tutorial or any other info. > By stream i mean something like this (I don't know exact definition): > > open Lazy;; > type 'a stream = Nil | Cons of 'a Lazy.t * 'a stream Lazy.t;; > > (* For example stream of 'integers from x' would look like this: *) > > let rec intsfrom x = > Cons(lazy x,lazy (intsfrom (x+1)));; > > If you know any www/book or anything on this kind of streams please mail me (error92@tlen.pl). > Many thanks. I call this a lazy list. Anyway, I use the following definition: type 'a l = Empty | Cons of 'a * 'a t and 'a t = 'a l lazy_t (* only one lazy object per cell *) See attachment for the full implementation. You can manipulate such lists like real lists, only the syntax is less comfortable. They are different from streams in the sense of the standard Stream module, which are mutable. Martin -- Martin Jambon, PhD http://martin.jambon.free.fr --8323328-2004934518-1155234691=:27674 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME=lizt.ml Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME=lizt.ml KCogbGF6eSBsaXN0cyAqKQ0KDQp0eXBlICdhIGwgPSBFbXB0eSB8IENvbnMg b2YgJ2EgKiAnYSB0DQphbmQgJ2EgdCA9ICdhIGwgbGF6eV90DQoNCmxldCBl bXB0eSA9IGxhenkgRW1wdHkNCmxldCBpc19lbXB0eSBsID0gTGF6eS5mb3Jj ZSBsID0gRW1wdHkNCg0KbGV0IHJlYyBmb3JjZSBsID0NCiAgbWF0Y2ggTGF6 eS5mb3JjZSBsIHdpdGgNCiAgICAgIEVtcHR5IC0+ICgpDQogICAgfCBDb25z IChoZCwgdGwpIC0+IGZvcmNlIHRsDQoNCmxldCBoZCBsID0NCiAgbWF0Y2gg TGF6eS5mb3JjZSBsIHdpdGgNCiAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJn ICJMaXp0LmhkIg0KICAgIHwgQ29ucyAoeCwgXykgLT4geA0KDQpsZXQgdGwg bCA9DQogIG1hdGNoIExhenkuZm9yY2UgbCB3aXRoDQogICAgICBFbXB0eSAt PiBpbnZhbGlkX2FyZyAiTGl6dC50bCINCiAgICB8IENvbnMgKF8sIHgpIC0+ IHgNCg0KbGV0IHBlZWsxIGwgPSANCiAgbWF0Y2ggTGF6eS5mb3JjZSBsIHdp dGgNCiAgICAgIEVtcHR5IC0+IE5vbmUNCiAgICB8IENvbnMgKHgsIF8pIC0+ IFNvbWUgeA0KDQpsZXQgcGVlazIgbCA9DQogIG1hdGNoIExhenkuZm9yY2Ug bCB3aXRoDQogICAgICBFbXB0eSAtPiBOb25lDQogICAgfCBDb25zICh4MSwg bCkgLT4gDQoJbWF0Y2ggTGF6eS5mb3JjZSBsIHdpdGgNCgkgICAgRW1wdHkg LT4gTm9uZQ0KCSAgfCBDb25zICh4MiwgbCkgLT4gU29tZSAoeDEsIHgyKQ0K DQpsZXQgcGVlazMgbCA9DQogIG1hdGNoIExhenkuZm9yY2UgbCB3aXRoDQog ICAgICBFbXB0eSAtPiBOb25lDQogICAgfCBDb25zICh4MSwgbCkgLT4gDQoJ bWF0Y2ggTGF6eS5mb3JjZSBsIHdpdGgNCgkgICAgRW1wdHkgLT4gTm9uZQ0K CSAgfCBDb25zICh4MiwgbCkgLT4gDQoJICAgICAgbWF0Y2ggTGF6eS5mb3Jj ZSBsIHdpdGgNCgkJICBFbXB0eSAtPiBOb25lDQoJCXwgQ29ucyAoeDMsIGwp IC0+IFNvbWUgKHgxLCB4MiwgeDMpDQoNCg0KbGV0IHJlYyBvZl9saXN0IGwg PQ0KICBsYXp5IChtYXRjaCBsIHdpdGgNCgkgICAgW10gLT4gRW1wdHkNCgkg IHwgaGQgOjogdGwgLT4gKENvbnMgKGhkLCBvZl9saXN0IHRsKSkpDQoNCmxl dCByZWMgdG9fbGlzdCBsID0NCiAgbWF0Y2ggTGF6eS5mb3JjZSBsIHdpdGgN CiAgICAgIEVtcHR5IC0+IFtdDQogICAgfCBDb25zIChoZCwgdGwpIC0+IGhk IDo6IHRvX2xpc3QgdGwNCg0KbGV0IGZyb20gZiA9DQogIGxldCByZWMgbWFr ZSBmIGkgPQ0KICAgIGxhenkgKG1hdGNoIGYgaSB3aXRoDQoJICAgICAgTm9u ZSAtPiBFbXB0eQ0KCSAgICB8IFNvbWUgeCAtPiBDb25zICh4LCBtYWtlIGYg KGkrMSkpKSBpbg0KICBtYWtlIGYgMA0KDQpsZXQgcmVjIGFwcGVuZCBsMSBs MiA9DQogIGxhenkgKG1hdGNoIExhenkuZm9yY2UgbDEgd2l0aA0KCSAgICBD b25zIChoZCwgdGwpIC0+IENvbnMgKGhkLCAoYXBwZW5kIHRsIGwyKSkNCgkg IHwgRW1wdHkgLT4gTGF6eS5mb3JjZSBsMikNCg0KbGV0IHJlYyBpdGVyIGYg bCA9DQogIG1hdGNoIExhenkuZm9yY2UgbCB3aXRoDQogICAgICBFbXB0eSAt PiAoKQ0KICAgIHwgQ29ucyAoaGQsIHRsKSAtPiBmIGhkOyBpdGVyIGYgdGwN Cg0KbGV0IHJlYyBtYXAgZiBsID0NCiAgbGF6eSAobWF0Y2ggTGF6eS5mb3Jj ZSBsIHdpdGgNCgkgICAgRW1wdHkgLT4gRW1wdHkNCgkgIHwgQ29ucyAoaGQs IHRsKSAtPiBDb25zIChmIGhkLCBtYXAgZiB0bCkpDQoNCmxldCBmaWx0ZXIg ZiBsID0NCiAgbGV0IHJlYyBsb29wIGYgbCA9DQogICAgbWF0Y2ggTGF6eS5m b3JjZSBsIHdpdGgNCglFbXB0eSAtPiBsYXp5IEVtcHR5DQogICAgICB8IENv bnMgKGhkLCB0bCkgLT4gDQoJICBpZiBmIGhkIHRoZW4gbGF6eSAoQ29ucyAo aGQsIGxvb3AgZiB0bCkpDQoJICBlbHNlIGxvb3AgZiB0bCBpbg0KICBsYXp5 IChMYXp5LmZvcmNlIChsb29wIGYgbCkpDQoNCmxldCBvcHRtYXAgZiBsID0N CiAgbGV0IHJlYyBsb29wIGYgbCA9DQogICAgbWF0Y2ggTGF6eS5mb3JjZSBs IHdpdGgNCglFbXB0eSAtPiBsYXp5IEVtcHR5DQogICAgICB8IENvbnMgKGhk LCB0bCkgLT4gDQoJICBtYXRjaCBmIGhkIHdpdGgNCgkgICAgICBTb21lIHkg LT4gbGF6eSAoQ29ucyAoeSwgbG9vcCBmIHRsKSkNCgkgICAgfCBOb25lIC0+ IGxvb3AgZiB0bCBpbg0KICBsYXp5IChMYXp5LmZvcmNlIChsb29wIGYgbCkp DQoNCmxldCByZWMgZm9sZF9sZWZ0IGYgYWNjdSBsID0NCiAgbWF0Y2ggTGF6 eS5mb3JjZSBsIHdpdGgNCiAgICAgIEVtcHR5IC0+IGFjY3UNCiAgICB8IENv bnMgKGhkLCB0bCkgLT4gZm9sZF9sZWZ0IGYgKGYgYWNjdSBoZCkgdGwNCg0K --8323328-2004934518-1155234691=:27674--