Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sdd.hp.com!uakari.primate.wisc.edu!dali.cs.montana.edu!ogicse!zephyr.ens.tek.com!tektronix!percy!data!kend From: kend@data.UUCP (Ken Dickey) Newsgroups: comp.lang.scheme Subject: Re: Scheme as an extension language and call/cc Message-ID: <409@data.UUCP> Date: 27 Aug 90 18:56:56 GMT References: Distribution: comp Organization: Microcosm, Beaverton, OR Lines: 36 pk@tut.fi (Kellom{ki Pertti) writes: ... >Although I like the idea of continuations, it seems that for an >extension language a'la Emacs Lisp they are a bit of overkill, because >of the extra implementation and runtime difficulties involved. For >most applications, "almost first class" continuations would be quite >sufficient. What I'm thinking of is some kind of catch-throw like >mechanism that could be expressed in terms of call/cc but implemented >more efficiently. This kind of subset would be enough for typical >(all?) uses of an extension language, while being compatible with >Scheme in the sense that all programs written using the subset could >be run using a "real" Scheme. >Before resorting to the "Scheme without call/cc is not Scheme" >argument (with which I quite agree), ... Yes, yes, yes! This point was raised during one of the IEEE Scheme Standard meetings. My recollection of the majority view at that meeting was that having e.g. Level 0 Scheme [without call/cc]..Level-N Scheme [full numeric tower+] was that it would cloud the issue of "What do you get when you get a Standard Scheme implementation?". If you have Scheme with Catch & Throw, but without Call/CC, *don't* call it "Scheme" [How about "Sub-Scheme" 8^]. {Seriously, if you need co-routines, non-blind backtracking, or have a timer interrupt and want to do multi-tasking, continuations are most useful. The implementation is not hard if you are doing an interpreter and efficient runtime implementation technology for compiled systems is well known.} [Just agreeing loudly; you could have hit `N' ] -Ken kend@data.uucp