Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!sun-barr!apple!agate!linus!linus!mingus!john From: john@mingus.mitre.org (John D. Burger) Newsgroups: comp.lang.lisp Subject: Re: Common Lisp, SOME, EVERY... Message-ID: <1991Feb27.160615.8328@linus.mitre.org> Date: 27 Feb 91 16:06:15 GMT Sender: news@linus.mitre.org (News Service) Organization: The MITRE Corporation, Bedford, MA 01730 Lines: 52 Nntp-Posting-Host: mingus.mitre.org srt@aero.org (Scott "TCB" Turner) writes: >Once upon a time I wrote: >>A language that has a 1000 built-in functions (constructs) is doomed. >>People don't have the cognitive mechanisms to deal with that number >>and variety of mechanisms. > >A number of people have responded to this with comments of the sort >"C has immense numbers of functions in libraries, and people deal >with that..." > >I don't think comparing Common Lisp's plethora of built-ins with >library functions in other languages is completely relevant. For the >most part, library functions are not general programming constructs. >They perform specific computing tasks such as i/o, database retrieval, >statistical manipulations and so on. But that's exactly what's going on in Common Lisp. The language doesn't have 1000 built-ins that do the same things that C's built-ins do. CL gives you explicit functionality that you just don't have in C (or many other languages). For example, CL has: Many more built-in types Explicit run-time typing Multiple values Real macros An explicit representation of environments Packages A system-independent representation of the file system (plus logical pathnames) An interface to the lexical analyzer (readtables) An interface to the compiler Sophisticated condition signalling and handling An introspective object system I want and use all of these things. C may have shadows of some of them, but they are not richly represented enough for me (please don't provide counter-examples). Which is not to say that some of your criticisms of specific cases are not well-founded. There is some unnecessary repetition in Common Lisp, and there are constructs that are only there for historic reasons. I have never seen code that uses PROG2, and I don't use SETQ, RPLACA or RPLACD. I have no use for LOOP, pretty printing, or most of the FORMAT sublanguage (which is Turing complete, isn't it? :) ). But what many people don't seem to take into account is that CL is not just a rebinding of the same functionality provided by C. To be only somewhat facetious, I think comparing the sizes of Common Lisp and C is like comparing the sizes of C and a RISC instruction set. -- John Burger john@mitre.org "You ever think about .signature files? I mean, do we really need them?" - alt.andy.rooney