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