* Corey Carroll
| ... The function makes use of reduce with a :key argument, but ACL's
| reduce does not know about the :key keyword argument!
|
| Incidentally, Graham gives a version of random-next that does NOT use
| reduce, claiming that reduce did not have :key back in 1984. And that
| function is less succint than the one which uses reduce, :key. Can't you
| guys bring your Lisp up to date?
FWIW, :KEY was added to ACL at my request on 1997-09-30. it is available
as patch 0306 to ACL 4.3.1, but 4.3.1 has not been released for Linux, so
the patch is not available for Linux, either. the :KEY argument to
REDUCE was added to Common Lisp in March 1988, so it's only 10 years old,
not 15, which Paul Graham might be construed to have implied...
I added this advice to ACL before the :KEY argument was added:
(in-package :franz)
(setf *compile-advice* t)
(unless (member :key (arglist #'reduce) :test #'string=)
(defadvice reduce (support-key :before)
(let ((key (getf (cddr arglist) :key)))
(when key
(remf (cddr arglist) :key)
(setf (second arglist)
(map 'vector key (second arglist)))))))
it isn't superefficient, but at least it works and you can compile
(somewhat more) conforming ANSI Common Lisp code with Allegro with it.
| How do I open up more than one lisp listener?
read the documentation for FI:OPEN-LISP-LISTENER. briefly, C-u <n> will
go to listener number <n>, or open it, while C-u - will open a new one.
#:Erik