all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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



  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.