Bruno Haible wrote:
>Invalid: You cannot load si2 before having loaded si1.
>You really need two process invocations:
> $ clisp -q
> > (compile-file "si1")
> $ clisp -q
> > (load "si1")
> > (compile-file "si2")
> > (load "si2")
While it may seem useful to point at the MOP to defend this =
recommendation (obligation), such argumentation is IMHO pointless in =
Practice will be that
1. some libraries like cl-sql do defclass+metaclasse+load don't do that
2. make system utilities (neither mk nor asdf) are not prepared for =
restarting the Lisp to continue compilation
3. cl-sql users will expect code to work out of the box
4. developers will be unlikely to support deviant behaviour from the =
particular CLISP implementation.
It remembers me of the ext:*keyboard-input* from the SCREEN package, =
which has been specified as causing the console to become input only =
for the extent of with-keyboard-input.
On UNIX, people saw that output to *terminal-io* still worked. So they =
(or the package they ported) used it (IIRC, punimax was/is such a =
[Actually, I may remember incorrectly, and input from *terminal-io* was =
(has always been?) forbidden by impnotes, not output, but that changes =
nothing to the lesson.]
On the Amiga, this failed (IIRC, the UNIX implementation would switch =
back *terminal-io* from raw to cooked mode automatically and back again =
to raw mode for *keyboard-input*).
Do you really believe that I was successful at pointing people to the =
clisp impnotes which clearly showed that their code was illegal =
according to impnotes??
Usually, if "it works for me", people will ignore the impnotes & =