Path: utzoo!utgpu!water!watmath!clyde!att!rutgers!njin!princeton!udel!rochester!bbn!uwmcsd1!ig!agate!pasteur!ames!lll-tis!lll-winken!uunet!mcvax!ukc!dcl-cs!simon From: simon@comp.lancs.ac.uk (Simon Brooke) Newsgroups: comp.lang.lisp Subject: Re: What's the value of lexical scoping? Summary: None. Keywords: Scope, Binding, Locals, Break, Future of LISP Message-ID: <515@dcl-csvax.comp.lancs.ac.uk> Date: 7 Jun 88 15:57:12 GMT References: <24508@ucbvax.BERKELEY.EDU> Reply-To: simon@comp.lancs.ac.uk (Simon Brooke) Organization: Department of Computing at Lancaster University, UK. Lines: 82 In article <24508@ucbvax.BERKELEY.EDU> mkent@dewey.soe.berkeley.edu (Marty Kent) writes: >I've been wondering lately why it is that "modern" lisps like Common Lisp >and Scheme are committed to lexical scoping. Good! somebody else prepared to stand up and say Common LISP is a mess. If you share this opinion, read the end of this posting even if you skip the middle... it is important. [I'm just commenting here on bits from Marty's posting - serious stuff later] > >I realize that discarding variable names from compiled code makes for >faster and smaller object modules, but it seems to me this kind of >"optimization" should be dependent on something like the setting of >"speed" in an optimize declaration. > This sort of 'optimisation' is pointless anyway, now that we work in 32-bit address spaces and memory is cheap. It must, surely, always be better to keep your local names with your code. >Well, I don't really mean to just sit here and bitch, what I'm really >hoping is that someone will tell me either: >1) actually it's easy to set up a decent runtime debugger using stock >Common Lisp functions, you simply have to ... Throw away that cruddy fortran-with-brackets and buy yourself a real LISP. I don't know if Metacomco have yet ported Cambridge LISP onto the Mac, but they easily could, and probably would if they felt there was a demand; this wouldn't solve your problem, as it static binds when compiled (ugh) but it is otherwise a nice lisp. More seriously, LeLisp has certainly been ported onto the Mac, and - I haven't played with it - it is reported to be a really nice LISP. I understand that the manuals are still only available in French, though. Finally, if you (or your employer) have a wallet as deep as the Marianas trench, there's the much-heralded micro-explorer. That *ought* to give a decent LISP environment, but again I haven't seen one. >or >2) while it's true that Common Lisp's scoping makes it difficult to write >debuggers, lexical scoping is still a good trade-off because it buys >you... > We had a long discussion about this on the uk.lisp newsgroup. I still have much of this on file and could post it if people are interested (I can't easily mail to the States). Advocates of lexical scoping offered a number of extremely tricky programming examples which couldn't be done with anything else. These were very impressive *as tricks*, but I couldn't ever imagine using any of them in a serious programming situation. In short, I wasn't convinced - but I should add that I didn't convince anyone else either. > > *** If you don't like Common LISP, the future is hopeful - but you should *** do something about it now! As you *ought* to know, an ISO working group is currently prepareing a new LISP standard, to be known as ISLISP. They hope to have this ready for the end of 1989, so the time to influence it is *as soon as possible*. Regrettably, this group is working from Common LISP as a basis; however, the good news is that it appears that dynamic binding a la EuLisp will be incorporated, and there will be no packages. The character set is being looked after by the Japanese, which has to be good news, because it guarantees that we will get an extended character set (how the CL committee were ever allowed to get away with upper case only - and, for G*d's sake, why they wanted to - is far beyond me). Obviously, I have my ideas about what a good LISP looks like (all right, as a minimum it has dynamic binding, both LAMBDA and NLAMBDA forms, at least the option of non-intrusive garbage collection; although it allows macros, there is nothing you can't do with a function; and it does not have packages, PROG, GO, stupid tokens in parameter lists, SETF....) - everybody else out there has their own list. If you *care* about your working language, the best way to make sure that this committee does not produce another ugly camel is to identify your nearest working group member and lobby as hard as you can. *DO IT NOW*. ** Simon Brooke ********************************************************* * e-mail : simon@uk.ac.lancs.comp * * surface: Dept of Computing, University of Lancaster, LA 1 4 YW, UK. * * * * Thought for today: isn't it time you learned the Language * ********************* International Superieur de Programmation? *********