Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!apple!snorkelwacker!bloom-beacon!GARLIC.STANFORD.EDU!mkatz From: mkatz@GARLIC.STANFORD.EDU (Morris Katz) Newsgroups: comp.lang.scheme Subject: Functionality and implicit arg's (call/cc & referential transparency) Message-ID: <9009042040.AA03495@garlic.Stanford.EDU> Date: 4 Sep 90 20:40:09 GMT References: <9009041920.AA29055@titan.rice.edu> Sender: daemon@athena.mit.edu (Mr Background) Organization: The Internet Lines: 20 Date: Tue, 4 Sep 90 14:20:09 CDT From: John Gateley Well, I mostly agree with you, but don't forget that call/cc can distinguish between the two flavors of letrec (the letrec implementation of cell which came across the net a year or two ago). I was very careful about how I phrased my statement. Two implementations which can be differentiated via call/cc are not equivalent according to my definition. Since the semantics of letrec I believe should be specified in terms of the Y combinator functionality, I consider the side effect based implementation to in some sense be incorrect. A really good compiler would use the more efficient side effect based implementation only when it could prove that the side effect could not be detected by a call/cc. ------------------------------------------------------------------------------- Morry Katz katz@cs.stanford.edu -------------------------------------------------------------------------------