Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!sdd.hp.com!spool.mu.edu!snorkelwacker.mit.edu!bloom-beacon!dont-send-mail-to-path-lines From: gjc@mitech.COM Newsgroups: comp.lang.scheme Subject: Fixing the order of evaluation. Minimizing the unexpected. Message-ID: <9104041629.AA19876@schizo> Date: 4 Apr 91 15:24:09 GMT Article-I.D.: schizo.9104041629.AA19876 Sender: daemon@athena.mit.edu (Mr Background) Reply-To: gjc@mitech.com Organization: The Internet Lines: 49 Odd numbered arguments right to left and even ones left to right? Of course that was proposed as just about the most stupid thing that anybody could think of. (What if somebody said, *yes*?) But lets be practical. Undefined order of evaluation, (undefined *anything* really) is one of the big things that gets in the way of most people learning a computer language. OK. Order of evaluation may be undefined. However, I ASK: *What* useful thing has the person who learns this fact of (some) computer languages REALLY LEARNED? Is it a reasonable stepping stone in intelectual developement? (To never trust the computer? To always be on the look out for ways it might screw you?) [Come to think of it. That is why it it took me only 10 minutes to learn how to program effectively in MACLISP. There were no special cases and exceptions to learn, nothing that got in the way of my previous experience of western/mathematical culture. Subtle implementation artifacts came up only in the more advanced areas.] Do most people who may be able to use a computer language give a tinkers damn about what some compiler-writing person knows? Or what some group of language implementors think they know about programming style? Face it. People understand the written word, and written directions are given to people in this format: LEFT-TO-RIGHT, TOP-TO-BOTTOM. Period, fact of life. (Yes, there are some right-to-left languages, but no bottom-to-top languages. And even our common western experience includes a NUMERIC representation stolen from an Arabic culture, which is right-to-left. And the confusion this has caused is even reflected in our COMPUTER HARDWARE, the silly Big-Endian, Little-Endian crap.) Does the community of Scheme programmers really gain enough from having an undefined order of evaluation of arguments to a procedure? Does it gain enough to make up for the losses faced as people learn the language. (Or in the long run, less usage of the language). I could be convinced! -gjc p.s. For example, in a spread-sheet the "order-of-evaluation" could very well be undefined, or at least be something that it is not a good idea to make use of in a complex program.