Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!mips!apple!snorkelwacker.mit.edu!bloom-beacon!dont-send-mail-to-path-lines From: gjc@mitech.COM Newsgroups: comp.lang.scheme Subject: Return value of SET!/SETQ/=, and order of evaluation Message-ID: <9104011524.AA09177@schizo> Date: 29 Mar 91 17:23:49 GMT Sender: daemon@athena.mit.edu (Mr Background) Reply-To: gjc@mitech.com Organization: The Internet Lines: 49 Actually, throw in the fact that in Scheme the empty list and logical false are DIFFERENT. As a LISP programmer for over 10 years I find it much more comfortable to program in C than in the latest Scheme standards. HEY GUYS: I think you have really blown it, BIG TIME. In C, I use the return value of assignments all the time. It is a very common programming practice. Also, I use the fact that the NULL pointer is logical false. And also, I use the order of evaluation implied by "&&" and "||" quite a bit. And it isn't just me, it is hundreds of thousands of C programmers. The way that Scheme is defined now, WELL, it just forces the programs to be much more verbose, with lots of extra LAMBDA/LET statements, and local variables, and even extra assignments. And I think it is just "peachy keen" and even "neeto" that that is exactly the kind of extra crap that Scheme Compiler Righters (writers?) think they there compilers and so good at. Fact: I think my compilers are good at removing extra local variables and crap Therefore: I think I will design the language to force users to introduce a lot of extra crap so that my compiler gets to show how good it is at removing it. It sure starts to smell like PASCAL to me. No longer do we have a LISP which is EXPRESSION oriented in the way that BLISS and quite a bit of C was. Instead we get something more of the flavor of the old languages with the statement/expression classification. There are some things in Scheme which are clearly "STATEMENTS" that is, forms which make no sense to use in a "EXPRESSION" (value) context. There there are things which are expressions. OK. Is a procedure call important? If so, then why is it not possible to define a procedure which has no defined return value? That is, why is it not possible to extend the language (via procedure definitions) in the class of STATEMENTS (e.g. built in SET!-CAR vs my own defined SET!-FROB)? Why only in the class of EXPRESSIONS? -gjc