Why don't people like lisp?

Marcin 'Qrczak' Kowalczyk qrczak at knm.org.pl
Fri Oct 24 13:31:02 EDT 2003


On Fri, 24 Oct 2003 02:18:38 +0000, prunesquallor wrote:

> CATCH and THROW are a restricted kind of continuation.  The only allow
> transfer of control in one direction and the transfer can only take
> place once.

It's not enough to implement backtracking (or I'm really confused).

> If you are curious about how mapcar interacts, I suggest you download
> the screamer package from 
>     http://www.ece.purdue.edu/~qobi/software.html

It CPS-transforms all nondeterministic code. And from what I read I guess
my mapcar example would simply not work - funcall must be used on deter­
ministic functions only, a lambda which uses "either" is nondeterministic,
and mapcar uses funcall internally or is equivalent - and is not handled
specially.

It must reimplement language constructs it wants to work with as I thought.
It shows how macros are useful for implementing a backtracking sublanguage
which looks like Lisp; it doesn't show how to add backtracking to an
existing language.

;;; Limitations
[...]
;;;  6. Doesn't handle most CommonLisp special forms.
;;;     Currently handle:
;;;       BLOCK
;;;       FUNCTION
;;;       GO
;;;       IF
;;;       LET
;;;       LET*
;;;       MULTIPLE-VALUE-CALL
;;;       MULTIPLE-VALUE-PROG1
;;;       PROGN
;;;       QUOTE
;;;       RETURN-FROM
;;;       SETQ
;;;       TAGBODY
;;;       THE
;;;     Probably will never handle:
;;;       CATCH
;;;       DECLARE
;;;       EVAL-WHEN
;;;       FLET
;;;       LABELS
;;;       MACROLET
;;;       PROGV
;;;       THROW
;;;       UNWIND-PROTECT
;;;    CLtL1 obsolete:
;;;       COMPILER-LET
;;;    CLtL2 additions:
;;;       GENERIC-FLET
;;;       GENERIC-LABELS
;;;       LOAD-TIME-VALUE
;;;       LOCALLY
;;;       WITH-ADDED-METHODS
;;;       SYMBOL-MACROLET

-- 
   __("<         Marcin Kowalczyk
   \__/       qrczak at knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/





More information about the Python-list mailing list