From: "Eric M. Ludlam" <eric@siege-engine.com>
To: Stefan Monnier <monnier@iro.umontreal.ca>,
cedet-eieio@lists.sourceforge.net, emacs-devel@gnu.org
Subject: Re: [cedet-eieio] Cleaning up the EIEIO namespace
Date: Wed, 13 Feb 2013 20:11:05 -0500 [thread overview]
Message-ID: <511C39A9.4000403@siege-engine.com> (raw)
In-Reply-To: <87k3qcfa4x.fsf@engster.org>
On 02/13/2013 11:31 AM, David Engster wrote:
> Stefan Monnier writes:
>> I don't know CLOS either. I also don't know EIEIO enough to know for
>> sure which functions are "internal" (and can hence move to "eieio-" or
>> even "eieio--" without any problem) and which are "exported", so that
>> renaming them has to be done more carefully (with obsolete aliases).
>
> Eric already posted links to the hyperspec where this can be looked
> up. From your bug report #10781, the following names are from CLOS:
>
> * Most of the slot-* names, like slot-boundp, slot-exists-p, etc.
> * make-instance, initialize-instance
> * with-slots
> * class-name, class-of
> * next-method-p, call-next-method
> * defgeneric, defclass, defmethod
>
> Now, whether to include them in the cl- or the eieio-namespace - I don't
> have a terribly strong opinion on that one. If it's deemed too hack-ish,
> then so be it, and we just prefix everything with eieio-. [Eric, if you
> feel more strongly about those names, then please speak up. :-) ]
>
> Actually, the most critical thing is 'oref' and 'oset', because this is
> used extensively (~1800 times in CEDET), and it is not from
> CLOS. Prefixing that with 'eieio-' would make code using EIEIO very
> verbose, but I guess there's just no way around that...?
I'm fine with renaming most EIEIO unique items with some eieio- flavor
of prefix. I know there is a debate of cl- vs eieio-. Drew summed up
well that EIEIO is an emulation of a subset of the OO parts of CLOS. I
think it is incomplete, particularly since it doesn't handle important
aspects of method polymorphism, such as allowing method differentiation
based on multiple input arguments, or against built-in types such as
string or number. Thus, my vote would be for an eieio- prefix since
someday a better cl- or clos- variant might appear.
As for the names of CLOS methods, such as make-instance, etc.
Personally, I think they should be left alone, but recognize that being
a part of Emacs can come with a naming cost. Unfortunately, that makes
it hard to differentiate between CLOS parts and misc eieio internal parts.
I also think of oref/oset in the same bin as CLOS names such as
make-instance, etc. CLOS examples all use slot-value/setf instead of
oref/oset. setf is part of cl, and couldn't be used at runtime, so I
mocked up the behavior with something matching aref/aset instead. They
are used all the time, and need a convenient name. Having oref/oset use
a different naming convention from the names from CLOS API would be
inconvenient.
Eric
next prev parent reply other threads:[~2013-02-14 1:11 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-10 18:10 Cleaning up the EIEIO namespace Stefan Monnier
2013-02-12 22:10 ` David Engster
2013-02-12 23:05 ` Drew Adams
2013-02-13 6:44 ` David Engster
2013-02-13 14:51 ` Drew Adams
2013-02-13 2:47 ` Stefan Monnier
2013-02-13 16:31 ` David Engster
2013-02-14 1:11 ` Eric M. Ludlam [this message]
2013-02-14 13:49 ` [cedet-eieio] " Stefan Monnier
2013-02-14 14:00 ` Xue Fuqiao
2013-02-14 21:17 ` David Engster
2013-02-14 22:16 ` Stefan Monnier
2013-02-18 21:32 ` David Engster
2013-02-19 3:26 ` [cedet-eieio] " Stefan Monnier
2013-02-19 19:49 ` David Engster
2013-02-19 21:55 ` Stefan Monnier
2013-02-20 23:41 ` [cedet-eieio] " Eric M. Ludlam
2013-03-29 10:04 ` Vitalie Spinu
2013-03-29 14:20 ` Drew Adams
2013-03-29 21:07 ` Stefan Monnier
2013-02-14 14:30 ` Stefan Monnier
2013-02-14 21:28 ` David Engster
2013-02-14 22:17 ` Stefan Monnier
2013-02-14 22:26 ` David Engster
2013-02-17 17:08 ` Stefan Monnier
2013-02-18 20:55 ` David Engster
2013-02-19 3:15 ` Stefan Monnier
2013-02-13 3:13 ` [cedet-eieio] " Eric M. Ludlam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=511C39A9.4000403@siege-engine.com \
--to=eric@siege-engine.com \
--cc=cedet-eieio@lists.sourceforge.net \
--cc=emacs-devel@gnu.org \
--cc=monnier@iro.umontreal.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.