mkatz@GARLIC.STANFORD.EDU (Morris Katz) (09/05/90)
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. I disagree! If a construct has a functional implementation, any implementation for which there is no operation that can demonstrate that it is not functional is effectively functional. (Sorry about all the negations, but I can't seem to find any better phraseology at the moment.) My interpreter might implement + using side effects for some perverse reason, but that does not necessarily make + an imperative operator. ------------------------------------------------------------------------------- Morry Katz katz@cs.stanford.edu -------------------------------------------------------------------------------