From: Nic Ferrier <nferrier@ferrier.me.uk>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: adding namespaces to emacs-lisp (better elisp?)
Date: Fri, 26 Jul 2013 17:56:50 +0100 [thread overview]
Message-ID: <871u6l2ral.fsf@ferrier.me.uk> (raw)
In-Reply-To: <jwvy58tl52t.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Fri, 26 Jul 2013 11:43:40 -0400")
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> We had a lot of discussion recently about making EmacsLisp
>
> I'm not sure I understand: do you mean Emacs does not Lisp enough yet?
Heh. Yeah. I dropped a word. I am going to work on blaming someone or
something for that and get back to you.
What I meant to say was:
We had a lot of discussion recently about making EmacsLisp better.
> Comments:
> - "Interning a symbol with "::" in it should no longer be possible.
> It should raise an error." Why not simply intern it in the
> corresponding namespace? It's probably a bad practice, but Emacs is
> usually not in the business of preventing bad practice.
That is a good idea. I will update the document with that. I agree emacs
is better off with it's laissez faire attitude.
> - I'm not sure how well it will cope with shadowing and non-namespaced
> symbols (e.g. symbols like `face' that aren't used as variables).
> The rule "global obarray is inspected first and if a symbol is found
> there that's what is used" means that we have to be vary careful about
> interning things in the global obarray since it can affect the way
> other code is handled.
Give an example of a potential problem?
I *think* you mean that adding new global symbols could affect
namespaced code. But I don't think that's any different than right now.
> Currently, we're very liberal about interning in the global obarray.
> Basically I think this shadowing rule makes things a bit too
> automatic for something where we need more control.
I disagree that's a reason not to try it. Yes, it could be a
problem... but the presumption has to be that new code would use this
way to namespace itself and that global pollution would therefore slow
down.
*Eventually* I'd expect things like the face use-case to be dealt with
in some sort of namespace system.
> - I'm not sure exactly how you expect importing namespaces
> should/will work.
I'll try and add some examples I guess. It's quite simple though, if I
have a package "nic" with 2 functions:
foo
bar
and you have a package "stefan", then you should be able to make aliases
to nic::foo and nic::bar in "stefan" namespace.
Ideally that should work with some simple statement:
;; Package: stefan
(import 'nic)
(foo)
in this example nic::foo and nic::bar would both be imported directly
into "stefan" and after that was done the following would be true:
(eq (symbol-function 'nic::foo)
(symbol-function 'stefan::foo))
or:
(import 'nic :as 'blah)
(blah::foo)
in this example nic::foo and nic::bar would be imported under the
namespace 'blah in the package "stefan".
I guess this could then be a use case for trees of namespaces, so that:
(stefan::blah::foo)
was possible.
I'm not sure about that last bit.
Nic
next prev parent reply other threads:[~2013-07-26 16:56 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-26 14:08 adding namespaces to emacs-lisp (better elisp?) Nic Ferrier
2013-07-26 14:34 ` Drew Adams
2013-07-26 17:01 ` Pascal J. Bourguignon
2013-07-26 17:01 ` CommonLisp namespace system (was Re: adding namespaces to emacs-lisp (better elisp?)) Nic Ferrier
2013-07-26 17:19 ` Drew Adams
2013-07-26 18:26 ` Sebastian Wiesner
2013-07-26 18:53 ` Drew Adams
2013-07-26 21:08 ` Pascal J. Bourguignon
2013-07-26 18:23 ` Stefan Monnier
2013-07-26 18:32 ` Nic Ferrier
2013-07-26 18:45 ` Tom Tromey
2013-07-26 18:58 ` Drew Adams
2013-07-26 19:06 ` Nic Ferrier
2013-07-26 20:46 ` CommonLisp namespace system Lars Brinkhoff
2013-07-26 20:57 ` Drew Adams
2013-07-26 21:47 ` Nic Ferrier
2013-07-29 17:31 ` Lars Brinkhoff
2013-07-26 20:57 ` CommonLisp namespace system (was Re: adding namespaces to emacs-lisp (better elisp?)) Drew Adams
2013-07-27 7:17 ` Richard Stallman
2013-07-27 8:13 ` Nic Ferrier
2013-07-27 11:43 ` Bastien
2013-07-27 12:00 ` David Engster
2013-07-27 16:56 ` Nic Ferrier
2013-07-27 23:52 ` Richard Stallman
2013-07-28 7:22 ` Nic Ferrier
2013-07-28 8:18 ` Jambunathan K
2013-07-28 12:10 ` Richard Stallman
2013-07-28 13:48 ` Nic Ferrier
2013-07-29 10:12 ` Richard Stallman
2013-07-29 10:45 ` Nic Ferrier
2013-07-30 0:31 ` Richard Stallman
2013-07-27 9:37 ` CommonLisp namespace system Lars Brinkhoff
2013-07-26 19:42 ` CommonLisp namespace system (was Re: adding namespaces to emacs-lisp (better elisp?)) Drew Adams
2013-07-26 21:26 ` Juanma Barranquero
2013-07-26 21:06 ` Pascal J. Bourguignon
2013-07-26 21:44 ` Nic Ferrier
2013-07-27 7:16 ` adding namespaces to emacs-lisp (better elisp?) Richard Stallman
2013-07-26 15:43 ` Stefan Monnier
2013-07-26 16:56 ` Nic Ferrier [this message]
2013-07-26 18:18 ` Stefan Monnier
2013-07-26 19:00 ` Nic Ferrier
2013-07-26 20:59 ` Stefan Monnier
2013-07-26 21:43 ` Nic Ferrier
2013-07-26 21:59 ` Drew Adams
2013-07-26 22:21 ` Stefan Monnier
2013-07-26 22:33 ` Nic Ferrier
2013-07-27 0:51 ` Stefan Monnier
2013-07-27 8:27 ` Nic Ferrier
2013-07-27 14:12 ` Stefan Monnier
2013-07-27 16:17 ` Nic Ferrier
2013-07-27 17:28 ` Stefan Monnier
2013-07-27 10:35 ` Pascal J. Bourguignon
2013-07-26 22:00 ` Drew Adams
2013-07-27 0:49 ` Stefan Monnier
2013-07-27 1:13 ` Drew Adams
2013-07-27 7:02 ` Lars Brinkhoff
2013-07-27 10:33 ` Pascal J. Bourguignon
2013-07-31 6:48 ` Lars Brinkhoff
2013-07-27 10:31 ` Pascal J. Bourguignon
2013-07-27 14:14 ` Stefan Monnier
2013-07-27 16:43 ` Drew Adams
2013-07-26 17:21 ` Davis Herring
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=871u6l2ral.fsf@ferrier.me.uk \
--to=nferrier@ferrier.me.uk \
--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.