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=0.3 required=5.0 tests=AWL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by yquem.inria.fr (Postfix) with ESMTP id 985E8BBAF for ; Tue, 27 May 2008 20:57:53 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuIAAOH2O0jVuj7Vo2dsb2JhbACSPwEBAQEBCAUIBxGbOA X-IronPort-AV: E=Sophos;i="4.27,549,1204498800"; d="scan'208";a="13112166" Received: from 30.mail-out.ovh.net ([213.186.62.213]) by mail3-smtp-sop.national.inria.fr with SMTP; 27 May 2008 20:57:44 +0200 Received: (qmail 20799 invoked by uid 503); 27 May 2008 18:58:04 -0000 Received: from b7.ovh.net (HELO mail181.ha.ovh.net) (213.186.33.57) by 30.mail-out.ovh.net with SMTP; 27 May 2008 18:58:04 -0000 Received: from b0.ovh.net (HELO queue-out) (213.186.33.50) by b0.ovh.net with SMTP; 27 May 2008 18:57:11 -0000 Received: from mut38-5-82-246-191-110.fbx.proxad.net (HELO ?192.168.0.10?) (forum%x9c.fr@82.246.191.110) by ns0.ovh.net with SMTP; 27 May 2008 18:57:10 -0000 Message-Id: From: "forum@x9c.fr" To: caml-list@yquem.inria.fr In-Reply-To: <87k5hf1vcc.fsf@mid.deneb.enyo.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yes Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Apple Message framework v919.2) Subject: Re: [Caml-list] [ANN] OCaml-Java project: 1.0 release Date: Tue, 27 May 2008 20:57:42 +0200 References: <764D4B4A-FA1E-4672-BA9D-4195193E1C48@x9c.fr> <200805270706.20939.jon@ffconsultancy.com> <9d3ec8300805262337o6cb390f0ma986212e065132d6@mail.gmail.com> <1211873192.483bb7a8d5597@imp.ovh.net> <9d3ec8300805270136w75102bci903324b0ee8bb846@mail.gmail.com> <87k5hf1vcc.fsf@mid.deneb.enyo.de> X-Mailer: Apple Mail (2.919.2) X-Ovh-Tracer-Id: 6450843518354785247 X-Ovh-Remote: 82.246.191.110 (mut38-5-82-246-191-110.fbx.proxad.net) X-Ovh-Local: 213.186.33.20 (ns0.ovh.net) X-Spam: no; 0.00; wikipedia:01 trampoline:01 invokes:01 trampoline:01 recursive:01 improbable:01 compilation:01 1.0:98 downward:98 closures:01 caml-list:01 functions:01 functions:01 tail:01 ghc:01 Le 27 mai 08 =E0 19:59, Florian Weimer a =E9crit : > * Till Varoquaux: > >> Anyways; here goes for trampolines (straight from wikipedia): >> >> "Used in some LISP implementations, a trampoline is a loop that >> iteratively invokes thunk-returning functions. A single trampoline is >> sufficient to express all control transfers of a program; a program =20= >> so >> expressed is trampolined or in "trampolined style"; converting a >> program to trampolined style is trampolining. Trampolined functions >> can be used to implement tail recursive function calls in >> stack-oriented languages." > > I'm not sure if this is this a universally understood term. In GHC > land, this is called a "mini-interpreter". The mini-interpreter =20 > doesn't > have to be *that* expensive if you can avoid consing, but this seems =20= > to > require whole-program analysis (or, at the very least, rather powerful > inter-procedural escape analysis). > > I think I've heard this term mostly in the context of currying > (specifically, in the implementation of downward closures in languages > such as Ada). > Indeed, I was aware of such a technique but did not know the name =20 "trampoline" (quite funny, by the way). It is highly improbable that I will =20 implement this in OCaml-Java. I want to keep separate compilation, and the possibility =20 of very-late linking as proposed by Java. Xavier Clerc=