From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: * X-Spam-Status: No, score=1.3 required=5.0 tests=AWL,SPF_NEUTRAL autolearn=disabled version=3.1.3 Received: from discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id B2988BC0A for ; Thu, 24 May 2007 23:29:21 +0200 (CEST) Received: from qb-out-0506.google.com (qb-out-0506.google.com [72.14.204.226]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id l4OLTKj6016367 for ; Thu, 24 May 2007 23:29:21 +0200 Received: by qb-out-0506.google.com with SMTP id z8so301796qbc for ; Thu, 24 May 2007 14:29:20 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:subject:from:to:cc:in-reply-to:references:content-type:date:message-id:mime-version:x-mailer:content-transfer-encoding:sender; b=qpqVSKXZZLOZeR7ytFJeSaoPYsB81szG8LL8jfZWfRo28vuafvDE0NqAkY56M8+XVRB7JsY9L/WMsZuYe/XuT+UptGYTLx3yC8/1fplCCbpMFB7hoEKB3BcaSswtloluza29Mu78QbBo7ZRE29YsNjwq+BGvc9NGIAM/flYr1d0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:subject:from:to:cc:in-reply-to:references:content-type:date:message-id:mime-version:x-mailer:content-transfer-encoding:sender; b=nbqlWwP26KdsU44S9KgDMsqqm5XtRL0G/qY1iCmcaioVKGWIztbiEKfUv1BsVfUJaK+8VJj4Ey+WqX6TY21LXN+hsaYEXEjs9f3P1aeEMEeNDPyI6wkrlqOrYRBcPLL7MV2TWw9A8g1yz52qeZm/d2LGRCvazmIrTrvZFYAVEaQ= Received: by 10.100.166.14 with SMTP id o14mr2209161ane.1180042160093; Thu, 24 May 2007 14:29:20 -0700 (PDT) Received: from ?192.168.3.4? ( [24.173.161.251]) by mx.google.com with ESMTP id c2sm4418703ana.2007.05.24.14.29.19; Thu, 24 May 2007 14:29:19 -0700 (PDT) Subject: Re: [Caml-list] Re: Teaching bottomline, part 3: what should improve. From: David Teller To: Loup Vaillant Cc: caml-list@yquem.inria.fr In-Reply-To: <6f9f8f4a0705240930t612a7ea9n725c42cbceb864f1@mail.gmail.com> References: <20070522234715.0BCB2BC74@yquem.inria.fr> <4653CF5C.4040305@cs.washington.edu> <6f9f8f4a0705230103r7152299esca6b56db93cfcf08@mail.gmail.com> <1179924683.6966.90.camel@Blefuscu> <6f9f8f4a0705240930t612a7ea9n725c42cbceb864f1@mail.gmail.com> Content-Type: text/plain Date: Thu, 24 May 2007 17:29:08 -0400 Message-Id: <1180042153.6098.40.camel@Blefuscu> Mime-Version: 1.0 X-Mailer: Evolution 2.10.1 Content-Transfer-Encoding: 7bit Sender: David Teller X-Miltered: at discorde with ID 465603B0.006 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; ens-lyon:01 0200,:01 arrays:01 haskell:01 syntax:01 camlp:01 traversing:01 traversing:01 cheers:01 wrote:01 caml-list:01 lazy:02 chunk:02 traversal:03 traversal:03 On Thu, 2007-05-24 at 18:30 +0200, Loup Vaillant wrote: > It sounds like you need some kind of macro which can encapsulate a > chunk of code into an anonymous function like : > > for_each i : my_list > begin > i*2 > end > (* map (fun i -> i*2) my_list *) > > and : > > accumulate acc = 0 in i : my_list > begin > acc+i > end > (* fold (+) 0 my_list *) > > Problem : works only on lists (or arrays, depending of your choice). > And a Haskell like syntax for creating lists would help. (something > like [0..10]). I think camlp4 can handle all that. Or perhaps map i traversing my_list begin i*2 end accumulate acc = 0 with i traversing my_list begin acc+i end ... where "traversing my_list" is a value with 'a lazy list, or something similar. Nothing then prevents from using different styles of "traversing" to provide left-to-right or right-to-left list traversal, or array traversal... Cheers, David