Path: utzoo!attcan!uunet!mcvax!ukc!etive!aiai!jeff From: jeff@aiai.ed.ac.uk (Jeff Dalton) Newsgroups: comp.lang.lisp Subject: Re: namespaces Message-ID: <251@skye.ed.ac.uk> Date: 10 Mar 89 18:01:10 GMT References: <6859@phoenix.Princeton.EDU> <52880@yale-celray.yale.UUCP> <7931@csli.STANFORD.EDU> Reply-To: jeff@aiai.UUCP (Jeff Dalton) Organization: AIAI, University of Edinburgh, Scotland Lines: 86 In article <7931@csli.STANFORD.EDU> johnson@csli.stanford.edu (Mark Johnson) writes: >Too much Scheme! Someone else just sent a message on the net asking >why CommonLisp uses different name spaces for variable and function >definitions. Personally, I think that this is one of the worst >features of CommonLisp. It makes my programs look like fields of #' >symbols and funcalls. It is also one of the hardest things for >students to learn - they get continually confused between the use of >LIST as a function and a variable. (I know it's bad programming >style, but people do do it). Return of the Style Wars! The use of separate name spaces goes back to Lisp 1.5, so it's not just Common Lisp; most Lisps have been that way. In many ways, Common Lisp is a traditional Lisp, albeit a big one. Whether FUNCTION and FUNCALL are good or bad depends, in part, on how often they're used. If they're relatively rare, they can be useful as signs that something unusual is happening. For example, FUNCALL indicates a call to a non-constant function. But if you adopt a more functional style, so that FUNCTION and FUNCALL are used all over the place, the resulting clutter may make the code harder to read. It's not too hard to explain FUNCTION as a syntactic marker, if you say, as CLtL does, that Lisp programs "are organized as forms and functions". The Lisp 1.5 syntax went more or less as follows: