From ... Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news.tele.dk!small.news.tele.dk!129.240.148.23!uio.no!nntp.uio.no!ifi.uio.no!not-for-mail From: Erik Naggum Newsgroups: comp.lang.lisp Subject: Re: Why no call with current continuation? Date: 02 Oct 2002 23:21:15 +0000 Organization: Naggum Software, Oslo, Norway Lines: 64 Message-ID: <3242589675749194@naggum.no> References: <3D98D523.CE0C2B95@melbpc.org.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: maud.ifi.uio.no 1033600876 1741 129.240.65.5 (2 Oct 2002 23:21:16 GMT) X-Complaints-To: abuse@ifi.uio.no NNTP-Posting-Date: 2 Oct 2002 23:21:16 GMT Mail-Copies-To: never User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 Xref: archiver1.google.com comp.lang.lisp:42799 * Tim Josling | I am wondering why there is no call/cc in lisp. It seems to be potentially | useful. Please get back to us when it is /actually/ useful. | For example, in the book 'On Lisp', a significant part of this excellent | book seems to consists of reinventing various cut down versions of | call/cc. Well, duh. | (Call/cc is a way to save the current state of the program in a | variable. You can use the variable later on onto resume processing at | that point. It can be used for coroutines, exception handling, | nondeterministic search, etc.) None of us know Scheme at all, so thanks for this lecture. | To my naive point of view this seems to be contrary to the usual lisp | approach. In your next life, learn a real Lisp before Scheme. This will change what you consider "usual" as well as actually help grasp a hell of lot more than you do now. | Three possibilities as to why call/cc is not in lisp occur to me: | | 1. For some reason it is not seen as useful. But to me it seems useful. That is because you have yet to learn how useful the Common Lisp constructs are. A common affliction of Scheme users is to believe that their ignorance of Common Lisp gives them a right to tell people about Scheme, which they know. This is actually nuts. | 2. It is too hard to implement efficiently - period. I don't know enough | about implementing functional languages to say for sure, though it does | look like it might be a challenge to implement e.g. maybe you need to | copy the stack. You do no implement languages with call/cc with ordinary stacks. Stacks are normally used to contain call frames. This works well because calls are strictly hierarchical. With call/cc, this is no longer true, so call frames need to be allocated from the heap and garbage-collected instead of the stack memory being trivially reusable. | 3. It can be implemented efficiently in scheme, but is too hard to | implement efficiently in lisp. I can't see any reason why this would be | the case. Lisp is bigger than scheme but the core of the language does | not look that much bigger to me. Do you actually believe this nonsense to be true? | Can anyone shed any light on this? If someone wants to use this as a | springboard for a lisp versus scheme discussion, please start another | thread. (In my view lisp and scheme both have good reasons to exist. I think both antibiotics and bacteria have good reason to exist, too. -- Erik Naggum, Oslo, Norway Act from reason, and failure makes you rethink and study harder. Act from faith, and failure makes you blame someone and push harder.