[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: adding namespaces to emacs-lisp (better elisp?)
From: |
Stefan Monnier |
Subject: |
Re: adding namespaces to emacs-lisp (better elisp?) |
Date: |
Fri, 26 Jul 2013 14:18:48 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) |
>> - 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.
Here's a scenario:
- namespaced packages A and B both locally define a function `toto'.
- non-namespaced package C comes along with a symbol `toto' somewhere in
its code, suddenly causing A and B's `toto' to be global rather
than local.
Note that instead of "non-namespaced package C", we could have some
package which uses symbols as "uniquified strings" and which uses the
global obarray for it and might occasionally intern `toto' in the course
of its normal execution.
IOW I think we should instead first look in the local obarray (over
which the coder does have control) and if that fails then look in the
global obarray.
> 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.
Old non-namespaced, hideous, dynamically scoped is Emacs's bread and
butter and we can't hope for it to disappear soon.
> 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))
Should this equality still stand if I (fset 'nic::foo 'blabla)?
I.e. is it one and the same symbol?
> 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.
Indeed, my impression is that you inevitably get to this kind
of situation, which you seemed to dislike. I personally don't find it
problematic, not even if we generalize it to some arbitrary graph, with
cycles and all.
Stefan
- Re: CommonLisp namespace system (was Re: adding namespaces to emacs-lisp (better elisp?)), (continued)
- Re: CommonLisp namespace system (was Re: adding namespaces to emacs-lisp (better elisp?)), David Engster, 2013/07/27
- Re: CommonLisp namespace system, Lars Brinkhoff, 2013/07/27
- RE: CommonLisp namespace system (was Re: adding namespaces to emacs-lisp (better elisp?)), Drew Adams, 2013/07/26
- Re: CommonLisp namespace system (was Re: adding namespaces to emacs-lisp (better elisp?)), Juanma Barranquero, 2013/07/26
- Re: CommonLisp namespace system (was Re: adding namespaces to emacs-lisp (better elisp?)), Pascal J. Bourguignon, 2013/07/26
- Re: CommonLisp namespace system (was Re: adding namespaces to emacs-lisp (better elisp?)), Nic Ferrier, 2013/07/26
Re: adding namespaces to emacs-lisp (better elisp?), Pascal J. Bourguignon, 2013/07/26
Re: adding namespaces to emacs-lisp (better elisp?), Richard Stallman, 2013/07/27
Re: adding namespaces to emacs-lisp (better elisp?), Stefan Monnier, 2013/07/26
- Re: adding namespaces to emacs-lisp (better elisp?), Nic Ferrier, 2013/07/26
- Re: adding namespaces to emacs-lisp (better elisp?),
Stefan Monnier <=
- Re: adding namespaces to emacs-lisp (better elisp?), Nic Ferrier, 2013/07/26
- Re: adding namespaces to emacs-lisp (better elisp?), Stefan Monnier, 2013/07/26
- Re: adding namespaces to emacs-lisp (better elisp?), Nic Ferrier, 2013/07/26
- RE: adding namespaces to emacs-lisp (better elisp?), Drew Adams, 2013/07/26
- Re: adding namespaces to emacs-lisp (better elisp?), Stefan Monnier, 2013/07/26
- Re: adding namespaces to emacs-lisp (better elisp?), Nic Ferrier, 2013/07/26
- Re: adding namespaces to emacs-lisp (better elisp?), Stefan Monnier, 2013/07/26
- Re: adding namespaces to emacs-lisp (better elisp?), Nic Ferrier, 2013/07/27
- Re: adding namespaces to emacs-lisp (better elisp?), Stefan Monnier, 2013/07/27
- Re: adding namespaces to emacs-lisp (better elisp?), Nic Ferrier, 2013/07/27