Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbatt!ihnp4!inuxc!pur-ee!uiucdcs!uiucuxc!uicsrd!harrison From: harrison@uicsrd.CSRD.UIUC.EDU Newsgroups: net.lang.lisp Subject: Re: call/cc and proper tail recursion Message-ID: <20000005@uicsrd> Date: Thu, 16-Oct-86 10:36:00 EST Article-I.D.: uicsrd.20000005 Posted: Thu Oct 16 10:36:00 1986 Date-Received: Sun, 26-Oct-86 01:13:32 EST References: <20000003@uicsrd> Lines: 14 Nf-ID: #R:uicsrd:20000003:uicsrd:20000005:000:417 Nf-From: uicsrd.CSRD.UIUC.EDU!harrison Oct 16 09:36:00 1986 The example has a typo! Should be: (define f (lambda (x y) (if (p1 x y) (bad-function)) (fn-with-side-effects x y) (if (p2 x y) #!null (f (cdr x) (cdr y))))) Again, bad-function is defined as (lambda () (set! g (call/cc (lambda (x) x)))) My claim is, that 'proper' tail recursion will cause an incorrect result here (upon the application of g).