22 comments

[ 3.1 ms ] story [ 67.8 ms ] thread
First thing I searched for on the page: loop (not found).
You have let [0], why would you need a special loop function?

[0] http://jtra.cz/stuff/lisp/sclr/let.html

Edit:

That is to say, this is a simplified reference, and loop is a macro, not a special form.

This response makes no sense. Most of the functions in that page are not special forms. And both "car" and "first" are included! And "cdr" and "rest". And there are other functions that can be trivially obtained by the composition of two functions.
Note that both CAR and CDR refer to parts of a CONS cell which does not necessarily represent a list.
That doesn't change the fact that car and first are two names for one single function (the same applies to cdr and rest). (The point is that the absence of loop cannot be explained because it's not "needed".)
I assume you're thinking about Schemes `(let loop (...) ...)`, but that doesn't exist in Common Lisp. CL:LOOP is a looping macro with its own small DSL.

    (loop :for i :below 5
          :when (evenp i) :collect i)
    ;=> (0 2 4)
That's a step up from loops with 'goto':

    (prog ((result '())
           (i 0))
      loop
      (when (>= i 5)
        (return (reverse result)))
      (when (evenp i)
        (push i result))
      (incf i)
      (go loop))
tagbody/go is implementation detail of macro expansion though.
prog + goto was two decades one of the main tools for loops in Lisp...
There seems to be a lot of functionality missing. Like, the entire CLOS.
I don't recommend using loop. Neither does Paul Graham (http://www.paulgraham.com/loop.html) nor John Foderaro, the main developer of Franz Lisp (http://compgroups.net/comp.lang.lisp/re-the-loop-macro-3/195...). Including loop in the Common Lisp standard was a contentious issue, opposed by Scott Fahlman, Guy Steele (3.2 in http://dreamsongs.com/Files/HOPL2-Uncut.pdf), and others (Steven M. Haflich's article on 9/16/02 in https://groups.google.com/forum/#!topic/comp.lang.lisp/tBmK0...).
Loop is ugly but sometimes an ugly tool is the best one for the job. Format is ugly too, but same issue.

One of the nice things about CL programmers is that we're all pretty smart and we can disagree while acknowledging each others' points. PG also dislikes CLOS for example. I think he's wrong about that, but I respect his opinions.

Format is ugly, but like a bulldog it is so ugly it's cute.

If you don't want loop, you can always use iterate. :-)

Ack. I've never been able to wrap my head around iterate and it's non-standard, so I ignore it. (I also ignore the pretty printer because I don't understand it, even though it is standard.)
I'm not really sure who the intended audience for this is! I find it quite difficult to imagine that anyone who doesn't already know what the functions do could actually figure it out from the descriptions, eg. "CDR function returns cdr part of cell in the argument, that is list of all elements but first. CDR is identical to REST."
I find it quite useful! My username should explain why :)
I used this site quite a bit when I was first introduced to Lisp.

Reading the first few chapters of ANSI Common Lisp gave me a good understanding of the semantics of the language, and this provided me with a specific explanation of the functionality of each function. Together that was enough to get through my assignments for the class I was taking at the time. It was most helpful for things like the differences between eq, eql, and equal.

Very nice resource! I have a suggestion: add a search field that would just search the linked function documentation summaries (depth of 1 web crawl). As someone else mentioned, adding a new section for CLOS would also be useful.

Pardon a shameless plug, but I released the 4th edition of my Common Lisp book yesterday (free to read online, and book is CC licensed so you can share it): https://leanpub.com/lovinglisp