The Simplest Lisp Machine

Looking for an inexpensive, robust Lisp system?  Consider this one:

Tried it?  Not satisfied?

Well, don’t blame me: it meets all of the basic qualifications for “Lispiness”:

  1. Does not hide the abstract syntax tree from programmers.
  2. Does not force a non-modifiable syntax on programmers.
  3. Does not impose an arbitrary order of sub-expression evaluation on programmers.
  4. Does not force a bondage-and-discipline type system on programmers.
  5. Does not create an arbitrary distinction between “run-time” and “compile-time.”

There are a great many other things this amazing silicon device refrains from doing!

Such as, for instance… computing.  And yet, it is still a Lisp system!  Lispiness is best understood as a collection of certain unfeatures (that is to say, anti-antifeatures.)  Usually, unfeatures are easy to implement.  In most (though not all) cases, all a designer must do in order to implement an unfeature is to refrain from tying the user’s hands in a particular way.

If you believe that the take-home message of this site boils down to “let’s use Lisp!”, this story is for you — and the above computer should take the place of your PC, until you understand its moral.  Note that the word “Lisp” never once comes up in the Seven Laws page.

Lispiness is merely a starting point, a basic requirement for any halfway-decent mind-amplifier — in much the same way that reasonable non-toxicity is a basic requirement for a tasty meal.

[1] Many more-or-less respectable Lisps are somewhat weak in unfeature #5.  Some so-called Lisps have quietly abandoned unfeature #4. And there are a few programming systems which lack unfeatures #2 and/or #3 — and still manage to be called “Lisps” by some people!  There are even those who refer to systems lacking unfeature #1 as Lisps! What can we say to them?  Words have meanings!  To these lost souls, “lisp” is probably just a speech impediment…

This entry was written by Stanislav , posted on Wednesday May 18 2011 , filed under Hot Air, Lisp . Bookmark the permalink . Post a comment below or leave a trackback: Trackback URL.

6 Responses to “The Simplest Lisp Machine”

  • jhuni says:

    Here are important qualifications of Lispiness:

    1) Automatic memory management: if memory objects are no longer in use they should be automatically be reclaimed by the system.

    2) Automatic volatility management: if volatile storage devices are used then the system should automatically manage them so that no data is lost in a power outage.

    3) Automatic cache management: all cached data should be automatically handled by the system and eliminated when necessary.

    4) Automatic type management: the system should automatically tag data structures with their type and perform type checking when necessary.

    5) Automatic versioning: old versions of data structures should automatically be maintained by the system using persistent data structures and logging, in order to forgive mistakes.

    Since your brick doesn’t automate anything at all, so it is far from Lispy, and actually in qualification number (4) what you were really looking for is automatic type management, because it is only with automation that the system won’t force you to manually manage data types, and for (5) you are actually looking for automatic cache management since compilation is a form of caching.

    As John McCarthy is the father of the automatic intelligence (AI) field, one of his goals with creating Lisp was to automate all computer operations from memory management all the way up the operations of intelligence. Considering this, if you really think that a brick that doesn’t automate anything is Lispy then you totally misunderstand Lisp. Some anti-features such as not imposing an arbitrary order of sub-expression evaluation, are an important part of Lisp, but that is besides the point

  • [...] of my work and how it differs from that of other OS crackpots. reader: I have some questions about _Unfeature V_ and macros in Loper Lisp. dunno if you have a [...]

  • pete23 says:

    (tc -)

    Hi, I think the dig at Qi / Shen is a little unfair. Type checking is entirely optional. Of course, if you do want type checking, then the type checker should be of equivalent power to the language itself and not restrictive. Almost akin to 5, which is really just “as above, so below”.

    (tc +)

  • another says:

    in much the same way that reasonable non-toxicity is a basic requirement for a tasty meal.

    eh. technically, if you were given a colourless, odourless, tasteless poison in an otherwise-good meal, it might still qualify as tasty.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">