July 10th, 2006

greatest hits

It has been a slow weekend at Planet Lisp, so here are a few links to interesting comp.lang.lisp articles.
  • Re: Where to start

  • Re: basic question about packages
    This post by Joe Marshall has a detailed description of his technique for structuring the packages of a large system, with the ability to manage different deliverable configurations.
    Our solution, therefore is to perform the package configuration as early on in the build process as possible. In fact, we do the package configuration *before* running any code at all by running the package configuration code and dumping an empty image. Development is done by booting the pre-configured image and loading code into it. Because the packages have already been laid out, we can pretty much depend on the right things ending up in the right places.


    1. Always, always, always put an IN-PACKAGE form as the *very first thing* at the start of every file. Don't *ever* switch packages in the middle of the file.
    2. Separate the implementation from the configuration. Put the DEFPACKAGE forms all in one place and make sure they get loaded before anything else. Don't start files with DEFPACKAGE.
    3. Don't use explicit package qualifiers you don't need.
    4. Keep the module count fairly low.

    If you do these things, you'll have fewer package `headaches'. If your system becomes big enough that you're wanting multiple configurations, several packages, and a custom bootstrap process, you'll already have everything factored out right.

  • Re: History of Common Lisp's multidimensional arrays?
    Steven M. Haflich discusses language philosophy and Lisp history:
    Lisp lives with a tension between data type abstraction and data processing efficiency. On one hand, Lisp is a high level language, and Common Lisp carefully presents mathematical integers as an abstraction. A typical implementation will support integer sizes far larger than native hardware sizes, and far outside realms needed by nearly all implementations. C (and also Java, to a considerable extent) provide in place if integers the mathematically-bizarre substitute of 2's complement mod-32-bit arithmetic. The trade offs between easily-predictable hardware execution speed and the possibility of airplanes falling out of the sky are familiar to most readers of this list and do not need further discussion. There are of course appropriate places for both designs.

  • Re: CL wrong step in the wrong direction?
    Kaz Kylheku responds to the common and weird "so what's wrong with Lisp?" line of questioning.
    Imagine a tourist who arrives at a strange town, finds an information office for travellers and asks ``where can I book a tour of the skankiest slums of this town so I can feel good about leaving it as soon as possible? Is there some nice pamphlet about everything that is wrong with this place that I can pass along to people so they can stay away? Also, what's the fastest way out of this dive?'' I would question why such a tourist didn't just stay home.