Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!rice!news From: gateley@datura.rice.edu (John Gateley) Newsgroups: comp.lang.scheme Subject: Re: Functionality and implicit arg's (call/cc & referential transparency) Message-ID: <1990Aug30.164457.26199@rice.edu> Date: 30 Aug 90 16:44:57 GMT References: <583@array.UUCP> <1990Aug24.212055.8368@nixtdc.uucp> <1543@anaxagoras.ils.nwu.edu> Sender: news@rice.edu (News) Organization: Rice University, Houston Lines: 20 In article <1543@anaxagoras.ils.nwu.edu> krulwich@ils.nwu.edu (Bruce Krulwich) writes: > (define ... > ... > (let -loop-name- (... vars ...) > ... > (another-proc ... > (lambda (arg) (-loop-name- arg)) ; success continuation > (lambda () (-loop-name- var)) ; failure continuation > ) )) The question about whether or not the above is functional hinges on one issue - how is the let loop implemented (heap space was mentioned in the article). If it is implemented with a let/set! approach (the normal macroexpansion for letrec), then it is NOT functional. If it is implemented with Y, then it is functional. However, I don't think you can translate call/cc in to some magic combinator Z so that it too is functional, it is still dependent on context. John gateley@rice.edu