Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!snorkelwacker.mit.edu!bloom-beacon!dont-send-mail-to-path-lines From: matthias@rice.EDU (Matthias Felleisen) Newsgroups: comp.lang.scheme Subject: Fixing the order of evaluation. Minimizing the unexpected. Message-ID: <9104090330.AA00407@leto.rice.edu> Date: 9 Apr 91 03:30:47 GMT References: <9104081645.AA16444@garlic.Stanford.EDU> Sender: daemon@athena.mit.edu (Mr Background) Organization: The Internet Lines: 41 .. languages with side effects of the type present in Scheme lack an intuitive property which has coloquially refered to as referential transparency .. They are not side-effect free :-). More seriously, if you remember my talk on expressiveness at Stanford, the correct idea is the following: there are "natural" equalities that hold for expressions that have some mathematical feel to them, e.g., a + b = b + a, (lambda (f) ((f 1) Omega)) = (lambda (f) Omega), etc, and these equations are no longer true in a world with side-effects. The expressions a and b may have side-effects, the parameter f may be a continuation. My conclusion in the expressiveness talk was that "when expressiveness goes up "natural equalities" go away." That's not a word, but the right idea. I was hoping that Scheme would be a language like ML, which has a simple semantics that can be used to prove meta-properties about the language. And in which simplicity and elegance ALWAYS (empahsis added by mjk) takes priority over ease of implementation. I never understood the goals of the Scheme community to be such that the word always would be appropriate in the above sentence. I would substitute often, usually, or normally. Sorry, I am an idealist and I washoping Schemer's were going for the best. Indeed, in heart I am an "Iswimer" much more than a Schemer. But as Jinx said, the Scheme community needs some idealists too keep the pragmaticioners :-) in check. .. one should be able to chose any arbitrary order of evaluation in order to determine what the program does. This is impssible in the presence of errors, exceptions, handlers, side-effects and so on. It leads to non-determinism and that is more difficult than Scheme wants to be. Not even in Pure Scheme (with errors) is it possible, albeit only for incorrect programs. But these are programs too and (their execution) must be analyzed in a students mind, indeed, more so than correct ones. A tool is only as helpful as the semantics ... -- Matthias