Ar an seachtú lá déag de mí Lúnasa, scríobh Stephen J. Turnbull:
Aidan Kehoe writes:
> changeset: 4677:8f1ee2d15784
> user: Aidan Kehoe <kehoea(a)parhasard.net>
> date: Sun Aug 16 20:55:49 2009 +0100
> files: lisp/ChangeLog lisp/byte-optimize.el lisp/bytecomp.el
lisp/cl-compat.el lisp/cl-macs.el lisp/cl.el lisp/lisp-mode.el lisp/mouse.el
lisp/obsolete.el man/ChangeLog man/cl.texi src/ChangeLog src/bytecode.c src/callint.c
src/device-x.c src/eval.c src/event-msw.c src/event-stream.c src/glade.c
src/glyphs-widget.c src/glyphs.c src/gui-x.c src/gui.c src/inline.c src/lisp.h src/lread.c
src/lrecord.h src/macros.c src/menubar-gtk.c src/menubar-msw.c src/print.c src/symbols.c
> Support full Common Lisp multiple values in C.
Would somebody please remind me why we need to support this feature,
given that it requires strewing unlovely stuff (some of which even the
author needs to tag with "Ugh") throughout not only the core code but
the packages too expose very tricky static functions to the global
scope, changes the semantics of the trickiest function in the whole
Lisp engine (throw was a function, now it's a special form), adds
instructions to the inner loop of the bytecode interpreter, and
complexifies the implementation of the byte code interpreter?
(I could go through this in detail and argue for the reasonableness of all
those changes, but you don’t want that, and putting that level of time into
discussion has never brought us anywhere constructive in the past.)
This seems to be a very large cost for something that is pretty much
YAGNI in Emacs. Existing uses are served quite well by the cl.el
implementation (especially since a large number of them are just plain
broken but apparently work anyway).
The thing that prompted my interest in multiple values was providing a
decent API for #'query-coding-region. That was my need, I wanted it to
return t if the region was encodable and return nil plus further information
(acquired in the course of executing the function) if it was not. And no,
having to use #'multiple-value-bind even when I was only interested in the
first arg does not help make the code understandable.
Every other dynamic language out there of note has this feature, by the way.
Emacs Lisp is not so special that its users have no interest in using it, or
in developing APIs that take full advantage of it.
¿Dónde estará ahora mi sobrino Yoghurtu Nghe, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?
XEmacs-Beta mailing list