From ... From: Erik Naggum Subject: Re: (no subject) Date: 1999/03/12 Message-ID: <3130271957311515@naggum.no>#1/1 X-Deja-AN: 454381465 References: <36E74ACB.7594C314@earthlink.net> <3130179335770282@naggum.no> <87oglzmft1.fsf@2xtreme.net> mail-copies-to: never Organization: Naggum Software; +47 8800 8879; http://www.naggum.no Newsgroups: comp.lang.lisp * tar@sevak.isi.edu (Thomas A. Russ) | I'll refrain from pointing out that I was trying to come up with a very | high-level overview for a language new-comer, rather than a detailed | technical spec. well, I think high-level overviews that contradict detailed technical specs are destructive and that if we cannot express ourselves save by contradicting the specifics, we do not have a consistent language to begin with, and high-level overviews should not be attempted. the task must be to find the appropriate way to express language characteristics that hold true no matter how deep we dig into the specifics. a new-comer needs to understand that there is no syntactic concept of a "statement" in the Algol sense in Lisp. while it is true that Lisp forms return values, I think the important difference between Algol and Lisp in this regard is that there is no restriction on where a form can be used, syntactically. (there are a number of semantic restrictions, of course.) this lack of restriction leads to the _conclusion_ that Lisp has been designed with a concern that forms should return useful values, even if they are intended for side effects, and that not using such values is not an error -- the form will still be fully evaluated. the important distinction is between languages that drive an artificial wedge between "statements" and "expressions" and languages that do not: the Algol family (including Scheme) does feature this artificial wedge, while the Lisp family (excluding Scheme) does not. #:Erik