* Re: About Emacs Modernisation Project
[not found] <143c6d28-4423-4e43-9fc5-c0fb3340043b@c11g2000vbe.googlegroups.com>
@ 2010-05-31 15:44 ` Pascal J. Bourguignon
[not found] ` <0e994fe3-6dde-449f-879d-6701c7a195a9@e28g2000vbd.googlegroups.com>
[not found] ` <87ljazofkn.fsf@rapttech.com.au>
1 sibling, 1 reply; 32+ messages in thread
From: Pascal J. Bourguignon @ 2010-05-31 15:44 UTC (permalink / raw)
To: help-gnu-emacs
Bernardo Barros <bernardobarros@gmail.com> writes:
> I was reading about this topic on the group homepage. One thing I
> though was how Emacs is really great because of Emacs Lisp, since it
> is a real programming language and an text editor at the same time.
> But maybe one of the reasons that Emacs is not so popular nowadays is
> that Lisp itself is also not so popular anymore either. Someone told
> something about less than 1%.
>
> I have just checked the Pymacs project [http://www.emacswiki.org/emacs/
> PyMacs] and I though to myself: "oh, that's a nice one, I could use
> Python instead of elisp to extend Emacs, I would like that a lot!".
> I'm a young guy and I don't work with lisp languages at all except
> when I use Emacs and Lilypond (a music notation program).
>
> But it seems to me that PyMacs is not a mature project yet, I would
> like to see this as a major version of Emacs. Maybe this is the way
> for Emacs 24 or 25? :-)
Lisp is a great language to implement compilers and interpreters with,
including of other, very different languages.
If you would like to customize, or have your users customize, emacs in
a different language than emacs lisp, then you can use or implement
easily such a different language in emacs lisp.
For example, there's ejacs, implementing javascript in emacs lisp.
There's emacs-cl, an implementation of Common Lisp in emacs lisp.
There's cl-python, an implementation of Python in Common Lisp, that
you could run on emacs-cl.
And several others I don't know or that I don't recall.
It's true that in all these cases, these packages would need some love
and further integration with emacs (the editor functions library) to
make them really usable.
It is true also that it would be much easier to import various things
such as these other languages in emacs if it was written in Common
Lisp, because there are more of these things written in Common Lisp
than in emacs lisp (which indeed, sounds restricted to, well, emacs).
Unfortunately, this is not the direction taken by emacs' authors; but
there are emacsen written in Common Lisp (eg. Porable Hemlock and
Climacs, amongsts several others).
And don't be affraid of stacking VM over VM, we've got hundreds of
core nowadays in GPU, tomorrow in CPU! :-)
--
__Pascal Bourguignon__
http://www.informatimago.com
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
[not found] ` <0e994fe3-6dde-449f-879d-6701c7a195a9@e28g2000vbd.googlegroups.com>
@ 2010-05-31 19:41 ` Alessandro Piras
[not found] ` <c41c63c0-b934-442d-8385-1abff6ab9b0b@s41g2000vba.googlegroups.com>
` (2 more replies)
0 siblings, 3 replies; 32+ messages in thread
From: Alessandro Piras @ 2010-05-31 19:41 UTC (permalink / raw)
To: help-gnu-emacs
LanX <lanx.perl@googlemail.com> writes:
> Hi
>
> I doubt that Python would be a good choice, Perl for instance has much
> more in common with LISP.
>
> And I doubt that eLISP is the reason why many people have problems
> with emacs, it's more that many "modern" GUI mechanisms and
> terminologies are not default in emacs, which frustrates newbies.
>
>
> IMHO an alternative (but compatible ) eLISP-dialect simply allowing to
> swap parens and functionnames and to write "message(...)" instead of
> "(message...)" would increase the acceptance immidiately.
Sounds Like M-expressions. It has been tried in the past in the Lisp world,
without much success. Most programmers realize after few time the
sweetness of S-expressions and macros. I think it would just lead to a
small amount of M-expressions code that would be soon refactored as
S-expressions.. Not worth the effort I suspect.
>
> (just think of how the different syntaxes of VBScript and JScript run
> on the same engine)
>
> But the biggest issue are the data structures, most "modern" script
> languages have extensive support for _dynamic_ "hashes" and "arrays",
> but not for "linked lists" which is the main structure in elisp.
>
> No real idea how this could be solved...
>
> cheers
> Rolf
>
> PS: forgot to mention this Slasheritis in regexes, IIRC Xemacs has
> already rawstrings while GnuEmacs users are forced to escape every
> regex symbol at least twice...
__
Alessandro
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
[not found] ` <87ljazofkn.fsf@rapttech.com.au>
@ 2010-05-31 23:33 ` LanX
2010-06-01 10:28 ` Helmut Eller
` (2 more replies)
0 siblings, 3 replies; 32+ messages in thread
From: LanX @ 2010-05-31 23:33 UTC (permalink / raw)
To: help-gnu-emacs
> My personal feeling is that changing to something else will never happen
> and is the wrong direction to go anyway.
I really enjoyed reading this blog on ejacs
http://steve-yegge.blogspot.com/2008/11/ejacs-javascript-interpreter-for-emacs.html
It highlights the problems in elisp when trying to realize
contemporaneous programming patterns.
No name spaces, no real lexical variables, slow properties, and so
on.
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
[not found] ` <87iq63wsvt.fsf@kuiper.lan.informatimago.com>
@ 2010-06-01 0:06 ` LanX
2010-06-01 8:44 ` Pascal J. Bourguignon
2010-06-02 6:17 ` Xah Lee
1 sibling, 1 reply; 32+ messages in thread
From: LanX @ 2010-06-01 0:06 UTC (permalink / raw)
To: help-gnu-emacs
> This feature is called "homoiconicity".
I understand your point, but IMHO for most code users write, they
don't need to eval code at runtime (which all script languages I know
can do BTW)
I have not doubt that it is a castration of LISP's possibilities to
allow users to write
function( [1,2,3], {k=>v})
which is then translated to
(function '(1 2 3) (k . v) )
before compilation.
IMHO this plus some flow control already covers everything most users
ever want.
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
[not found] ` <c41c63c0-b934-442d-8385-1abff6ab9b0b@s41g2000vba.googlegroups.com>
@ 2010-06-01 0:40 ` Alessandro Piras
0 siblings, 0 replies; 32+ messages in thread
From: Alessandro Piras @ 2010-06-01 0:40 UTC (permalink / raw)
To: help-gnu-emacs
LanX <lanx.perl@googlemail.com> writes:
>> Sounds Like M-expressions. It has been tried in the past in the Lisp world,
>> without much success.
>
> I took a look at http://en.wikipedia.org/wiki/M-expression and it's
> not quite what I was thinking of.
>
> I don't wanna _replace_ elisp with new semantics. Instead of this I'm
> thinking about trying to have automatically translated second ALGOL
> stile syntactic representation of the same code.
New semantics? I don't see any new semantics in M-expressions, but maybe
it's me.
From the examples listed:
(car lst) => car[lst]
(car (append lst1 lst2)) => car[append[lst1; lst2]]
Say you want to drop the ";" for argument separation (it's syntactic
sugar after all), and say you want to use parens instead of brackets:
car(append(lst1 lst2))
>
> So it should be possible to easily switch between these two
> representations.
>
> But thats only an idea, I'm not sure if it's really feasible.
Switching can be maybe easy, but you lose quite some power: as Pascal
said in the other post, code won't be data anymore, and it's not only a
matter of evaluating code at runtime.
__
Alessandro
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
[not found] ` <87r5krh3e0.fsf@unm.edu>
@ 2010-06-01 8:40 ` Pascal J. Bourguignon
2010-06-01 17:34 ` rustom
2010-06-01 19:50 ` Stefan Monnier
1 sibling, 1 reply; 32+ messages in thread
From: Pascal J. Bourguignon @ 2010-06-01 8:40 UTC (permalink / raw)
To: help-gnu-emacs
Evans Winner <thorne@unm.edu> writes:
> LanX <lanx.perl@googlemail.com> writes:
>
> No name spaces, no real lexical variables [...]
>
> These are not bugs, they are features. One uses the right
> tool for the job. It is highly unlikely that the language
> of choice for serious hackers working on developing large,
> complex systems is going to be the same language chosen for
> casual text editor users who want to quickly and simply
> customize some element of their editor.
Possibly. However, if emacs was reprogrammed in Common Lisp, you
could have both. Naive users could be provided with an environment
with only dynamic binding and a unique namespace, while sophisticated
programmers could use all the features of Common Lisp. Also, as
mentionned in another post, it would be easier to implement other
user-friend scripting languages in Common Lisp than in emacs lisp.
> If I had to put up
> with thinking about bugs from counter-intuitive effects of
> lexical bindings, or package problems when writing code to
> do every simple thing I want Emacs to do, I'd just forget
> the whole stupid thing and go back to notepad.exe -- or more
> precisely, a non-programmer like me would never have even
> gotten a start with it. I've written some reasonably useful
> code -- at least for my own purposes, and as a result of my
> work with Emacs I have even learned a bit of Common Lisp,
> but I don't think that I am alone in that for me Emacs Lisp
> is just the exactly right language. It is simple and
> intuitive while retaining a good deal of the expressiveness
> of a Lisp.
Just write one emacs lisp program slightly more complex, and you'll
see that you'd rather program text processing scripts in Common Lisp.
> If what you want to implement requires industrial-strength
> language features, why do you want to implement it in a text
> editor?
No, that's the other way. Why isn't this text editor implemented in
an industrial-strength language. History, of course. But it should be
time to correct history errors. Otherwise have a look at Climacs.
> -- I mean, I know there are borderline cases, like
> gnus, which I use and which is a pretty large and complex
> system, but for most purposes, I think Emacs Lisp actually
> encourages the production of a lot of little, useful hacks.
Unmaintainable hacks. That's the problem for me with emacs lisp code,
it's often unmaintable, overly complex, and badly programmed.
> Using a language like Python or Guile scheme doesn't strike me as
> being as likely to encourage that kind of thing.
>
> P.S. Climacs, which Pascal mentioned, is useless to me
> anyway, because it won't work in a TTY. I can't imagine
> never wanting to just shell into a system and go, without
> having to tunnel X and all that rot.
Yes, I'd like it to work on a terminal too. Clearly, we need more
time!
--
__Pascal Bourguignon__ http://www.informatimago.com/
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 0:06 ` LanX
@ 2010-06-01 8:44 ` Pascal J. Bourguignon
2010-06-01 11:19 ` LanX
0 siblings, 1 reply; 32+ messages in thread
From: Pascal J. Bourguignon @ 2010-06-01 8:44 UTC (permalink / raw)
To: help-gnu-emacs
LanX <lanx.perl@googlemail.com> writes:
>> This feature is called "homoiconicity".
>
> I understand your point, but IMHO for most code users write, they
> don't need to eval code at runtime (which all script languages I know
> can do BTW)
>
> I have not doubt that it is a castration of LISP's possibilities to
> allow users to write
>
> function( [1,2,3], {k=>v})
>
> which is then translated to
>
> (function '(1 2 3) (k . v) )
>
> before compilation.
>
> IMHO this plus some flow control already covers everything most users
> ever want.
Do you realize that lisp is actually a very small core language?
(eval fits on a single page).
All the rest, the lisp programming language you _use_ is not this core
lisp, it's only _MACROS_! And for them it is essential to have
homoiconicity.
Even if you don't write macros yourself you are constantly using them.
Since (k . v) is not a form, what you call 'function' above MUST be a macro!
--
__Pascal Bourguignon__ http://www.informatimago.com/
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-05-31 23:33 ` LanX
@ 2010-06-01 10:28 ` Helmut Eller
2010-06-01 11:27 ` LanX
2010-06-02 17:05 ` Xah Lee
[not found] ` <87r5krh3e0.fsf@unm.edu>
2010-06-04 18:33 ` Joseph Brenner
2 siblings, 2 replies; 32+ messages in thread
From: Helmut Eller @ 2010-06-01 10:28 UTC (permalink / raw)
To: help-gnu-emacs
* LanX [2010-06-01 01:33+0200] writes:
>> My personal feeling is that changing to something else will never happen
>> and is the wrong direction to go anyway.
>
> I really enjoyed reading this blog on ejacs
>
> http://steve-yegge.blogspot.com/2008/11/ejacs-javascript-interpreter-for-emacs.html
>
> It highlights the problems in elisp when trying to realize
> contemporaneous programming patterns.
>
> No name spaces, no real lexical variables, slow properties, and so
> on.
Why didn't he write the Javascript interpreter in Javascript? Or why
did he write a Javascript interpreter at all? The only interesting
place to run and debug Javascript is inside a browser with complete DOM
access anyway.
Helmut
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 8:44 ` Pascal J. Bourguignon
@ 2010-06-01 11:19 ` LanX
2010-06-01 12:56 ` Pascal J. Bourguignon
0 siblings, 1 reply; 32+ messages in thread
From: LanX @ 2010-06-01 11:19 UTC (permalink / raw)
To: help-gnu-emacs
Hi
> Do you realize that lisp is actually a very small core language?
> (eval fits on a single page).
I think that I made quite clear that I want this c/js/perl-style
representation (lets call it PSILe) to be transformed to eLISP
_before_ compilation.
Macros will still work on the plain eLISP representation.
(of course defining macros for PLISe wouldn't be easy feasible, but
normal users won't miss macros...)
The tricky part would be to find a representation that works without
ambiguities in both directions, such that old lisp code could be used
as a base for this "new" coding.
I don't know if it's really feasible but it's for sure an interesting
task.
PLISe <-> eLISP -> Macro expansion -> compilation -> execution
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 10:28 ` Helmut Eller
@ 2010-06-01 11:27 ` LanX
2010-06-01 12:29 ` Helmut Eller
2010-06-02 17:05 ` Xah Lee
1 sibling, 1 reply; 32+ messages in thread
From: LanX @ 2010-06-01 11:27 UTC (permalink / raw)
To: help-gnu-emacs
Hi
> Why didn't he write the Javascript interpreter in Javascript? Or why
> did he write a Javascript interpreter at all? The only interesting
> place to run and debug Javascript is inside a browser with complete DOM
> access anyway.
No _CORE_ JS is a very lean and extendible language (not by macros but
by prototype OO) which is embedded in many products not just browsers.
Maybe the most embedded language today ...
(PDF-reader, Flash-player,...)
DOM and BOM (Browser OM) are just a local native library, the EOM
(Emacs Object Model) would be represented in emacs by the core
functions and variables, e.g. for manipulating buffers or faces.
Many of these EOM features are already realized in C and not eLISP
(like they are in Browsers)
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 11:27 ` LanX
@ 2010-06-01 12:29 ` Helmut Eller
2010-06-01 12:55 ` LanX
2010-06-01 12:59 ` Pascal J. Bourguignon
0 siblings, 2 replies; 32+ messages in thread
From: Helmut Eller @ 2010-06-01 12:29 UTC (permalink / raw)
To: help-gnu-emacs
* LanX [2010-06-01 13:27+0200] writes:
> Hi
>
>> Why didn't he write the Javascript interpreter in Javascript? Or why
>> did he write a Javascript interpreter at all? The only interesting
>> place to run and debug Javascript is inside a browser with complete DOM
>> access anyway.
>
> No _CORE_ JS is a very lean and extendible language (not by macros but
> by prototype OO) which is embedded in many products not just browsers.
> Maybe the most embedded language today ...
> (PDF-reader, Flash-player,...)
>
> DOM and BOM (Browser OM) are just a local native library, the EOM
> (Emacs Object Model) would be represented in emacs by the core
> functions and variables, e.g. for manipulating buffers or faces.
>
> Many of these EOM features are already realized in C and not eLISP
> (like they are in Browsers)
Just what I said: the interesting thing about JS is not the language but
the DOM. I still fail to see why calling Emacs' C functions from a JS
interpreter (written in Elisp) would be interesting.
Helmut
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 12:29 ` Helmut Eller
@ 2010-06-01 12:55 ` LanX
2010-06-01 12:59 ` Pascal J. Bourguignon
2010-06-01 12:59 ` Pascal J. Bourguignon
1 sibling, 1 reply; 32+ messages in thread
From: LanX @ 2010-06-01 12:55 UTC (permalink / raw)
To: help-gnu-emacs
> Just what I said: the interesting thing about JS is not the language but
> the DOM. I still fail to see why calling Emacs' C functions from a JS
> interpreter (written in Elisp) would be interesting.
Much broader acceptance, nowadays JS is a lingua franca most
programmers can at least read if not code.
But I'm neither too fond about slowly emulating JS in elisp.
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 11:19 ` LanX
@ 2010-06-01 12:56 ` Pascal J. Bourguignon
0 siblings, 0 replies; 32+ messages in thread
From: Pascal J. Bourguignon @ 2010-06-01 12:56 UTC (permalink / raw)
To: help-gnu-emacs
LanX <lanx.perl@googlemail.com> writes:
> Hi
>
>> Do you realize that lisp is actually a very small core language?
>> (eval fits on a single page).
>
> I think that I made quite clear that I want this c/js/perl-style
> representation (lets call it PSILe) to be transformed to eLISP
> _before_ compilation.
>
> Macros will still work on the plain eLISP representation.
>
> (of course defining macros for PLISe wouldn't be easy feasible, but
> normal users won't miss macros...)
>
> The tricky part would be to find a representation that works without
> ambiguities in both directions, such that old lisp code could be used
> as a base for this "new" coding.
>
> I don't know if it's really feasible but it's for sure an interesting
> task.
>
> PLISe <-> eLISP -> Macro expansion -> compilation -> execution
It is effectively entirely feasible.
See for example parenscript (and jwacs) in CL.
http://common-lisp.net/project/parenscript/
(or Liskell for another example, but there are a lot of them).
Parenscript is a set of functions and macros that allows you to write
javascript code as lisp sexps. The point of course is to allow
lispers (emacs users) to be able to write barbaric languages
(languages with barbaric syntaxes), on one hand, and to be able to
define macros for these barbaric languages on the other hand (the
macros written in lisp would transform parenscript forms into
parenscript forms, before being translated to Javascript).
(jwacs does the reverse transformation, parsing Javascript and
producing lisp objects; I used it once to revert to the parenscript
form so that I could go between both syntaxes).
This covers the first <-> arrow.
Now to compile parenscript to Common Lisp, you would still need to
implement a run-time library of javascript semantics in lisp (eg. the
object system is quite different, the data types, etc). In general,
the core languages are easy to translate to Lisp, since they're often
much less sophisticated than Lisp.
--
__Pascal Bourguignon__
http://www.informatimago.com
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 12:29 ` Helmut Eller
2010-06-01 12:55 ` LanX
@ 2010-06-01 12:59 ` Pascal J. Bourguignon
1 sibling, 0 replies; 32+ messages in thread
From: Pascal J. Bourguignon @ 2010-06-01 12:59 UTC (permalink / raw)
To: help-gnu-emacs
Helmut Eller <eller.helmut@gmail.com> writes:
> * LanX [2010-06-01 13:27+0200] writes:
>
>> Hi
>>
>>> Why didn't he write the Javascript interpreter in Javascript? Or why
>>> did he write a Javascript interpreter at all? The only interesting
>>> place to run and debug Javascript is inside a browser with complete DOM
>>> access anyway.
>>
>> No _CORE_ JS is a very lean and extendible language (not by macros but
>> by prototype OO) which is embedded in many products not just browsers.
>> Maybe the most embedded language today ...
>> (PDF-reader, Flash-player,...)
>>
>> DOM and BOM (Browser OM) are just a local native library, the EOM
>> (Emacs Object Model) would be represented in emacs by the core
>> functions and variables, e.g. for manipulating buffers or faces.
>>
>> Many of these EOM features are already realized in C and not eLISP
>> (like they are in Browsers)
>
> Just what I said: the interesting thing about JS is not the language but
> the DOM. I still fail to see why calling Emacs' C functions from a JS
> interpreter (written in Elisp) would be interesting.
"User interface". Some users speak Javascript. Some others speak
Python, etc.
I agree that it's unfortunate that not everybody is taught Lisp in
preschool, (like they should be taught Esperanto), but that's how it
is...
--
__Pascal Bourguignon__
http://www.informatimago.com
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 12:55 ` LanX
@ 2010-06-01 12:59 ` Pascal J. Bourguignon
0 siblings, 0 replies; 32+ messages in thread
From: Pascal J. Bourguignon @ 2010-06-01 12:59 UTC (permalink / raw)
To: help-gnu-emacs
LanX <lanx.perl@googlemail.com> writes:
>> Just what I said: the interesting thing about JS is not the language but
>> the DOM. I still fail to see why calling Emacs' C functions from a JS
>> interpreter (written in Elisp) would be interesting.
>
> Much broader acceptance, nowadays JS is a lingua franca most
> programmers can at least read if not code.
>
> But I'm neither too fond about slowly emulating JS in elisp.
This is no problem since you can always add a compiler.
--
__Pascal Bourguignon__
http://www.informatimago.com
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 8:40 ` Pascal J. Bourguignon
@ 2010-06-01 17:34 ` rustom
2010-06-02 12:47 ` B. T. Raven
0 siblings, 1 reply; 32+ messages in thread
From: rustom @ 2010-06-01 17:34 UTC (permalink / raw)
To: help-gnu-emacs
On Jun 1, 1:40 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
> Evans Winner <tho...@unm.edu> writes:
> > LanX <lanx.p...@googlemail.com> writes:
>
> > No name spaces, no real lexical variables [...]
>
> > These are not bugs, they are features. One uses the right
> > tool for the job. It is highly unlikely that the language
> > of choice for serious hackers working on developing large,
> > complex systems is going to be the same language chosen for
> > casual text editor users who want to quickly and simply
> > customize some element of their editor.
>
> Possibly. However, if emacs was reprogrammed in Common Lisp, you
> could have both. Naive users could be provided with an environment
> with only dynamic binding and a unique namespace, while sophisticated
> programmers could use all the features of Common Lisp. Also, as
> mentionned in another post, it would be easier to implement other
> user-friend scripting languages in Common Lisp than in emacs lisp.
>
I remember seeing a paper (by a German I think) in which he claimed
that he could *fully automatically* translate elisp to scheme. Does
anyone remember this? [My google foo is not up-to-the-mark...]
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
[not found] ` <87r5krh3e0.fsf@unm.edu>
2010-06-01 8:40 ` Pascal J. Bourguignon
@ 2010-06-01 19:50 ` Stefan Monnier
2010-06-01 23:22 ` LanX
[not found] ` <87mxvegz12.fsf@unm.edu>
1 sibling, 2 replies; 32+ messages in thread
From: Stefan Monnier @ 2010-06-01 19:50 UTC (permalink / raw)
To: help-gnu-emacs
> No name spaces, no real lexical variables [...]
> These are not bugs, they are features.
No, they're not. Elisp is slow and unsuited to "large" programs (which
do exist in Emacs, despite this barrier), and that is a problem. But it
has a lot of legacy which is a large part of its popularity and
longevity. If you want an Emacs that's not "hindered" by such legacy,
there are plenty, but then you don't enjoy the benefits of having such
a large legacy.
You can't have your cake and eat it too.
> editor? -- I mean, I know there are borderline cases, like
> gnus, which I use and which is a pretty large and complex
> system, but for most purposes, I think Emacs Lisp actually
> encourages the production of a lot of little, useful hacks.
Indeed. But lexical scoping and name spaces wouldn't make any
difference in this respect.
Stefan
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 19:50 ` Stefan Monnier
@ 2010-06-01 23:22 ` LanX
[not found] ` <slrni0b8nm.9k6.bergv@u00.math.uiuc.edu>
[not found] ` <e73e123d-3f0c-4a6f-bbac-b91fb71bf07d@f14g2000vbn.googlegroups.com>
[not found] ` <87mxvegz12.fsf@unm.edu>
1 sibling, 2 replies; 32+ messages in thread
From: LanX @ 2010-06-01 23:22 UTC (permalink / raw)
To: help-gnu-emacs
> > I think Emacs Lisp actually
> > encourages the production of a lot of little, useful hacks.
>
> Indeed. But lexical scoping and name spaces wouldn't make any
> difference in this respect.
But the lack of namespaces leads to very long names which IMHO
irritate newbies.
At least it did irritate me at the time to find out that I need to
type "M-x font-lock-fontify-buffer" to get highlighting, and it still
irritates others when I explain to do so.
Snippets manipulating different aspects of font-lock would look less
intimidating, without the need to repeat "font-lock-" 20 times.
And something like customize-group NAME-SPACE wouldn't need to list
the prefix NAME-SPACE-... for each option.
IMHO the option to use shorter identifiers for functions and variables
would increase the acceptance of elisp and emacs!
You might think that it's only a matter of getting used to, but maybe
you should better ask the folks who turned away maybe thinking that a
system with >20 char identifiers is far too complicated...
When manipulating the DOM of a browser with JS I have standard
mechanisms to considerately shorten the path to a variable or
function.
Are there any in eLisp?
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
[not found] ` <87mxvegz12.fsf@unm.edu>
@ 2010-06-01 23:36 ` Pascal J. Bourguignon
2010-06-02 5:58 ` Evans Winner
0 siblings, 1 reply; 32+ messages in thread
From: Pascal J. Bourguignon @ 2010-06-01 23:36 UTC (permalink / raw)
To: help-gnu-emacs
Evans Winner <thorne@unm.edu> writes:
> [...]
> I say all this not because I am an expert, obviously, but
> precisely the opposite. I think that it is not such a given
> that Emacs ought to be re-written in Scheme or CL, and those
> who want to do it may find that it's a hard sell to get some
> Luddites like me using it, that's all.
I mostly agree with you, (and I'm letting me being convinced that
emacs lisp itself has some value for casual "programmers"),
nonetheless it occured to be rather often that I had problems in my
code because of collision of dynamic variable or function names.
So even if we agree (and let's say we do), that we must keep and
cannot do otherwise than keeping emacs lisp, for the benefit of users
and existing emacs lisp code, I still think that it would be a good
thing for emacs to be based on Common Lisp, and to let sophisticated
programmers use CL to write emacs lisp packages. Programmers who
write applications such as GNUS, or programmers who want to avoid
problems such as these collisions could use Common Lisp packages.
Common Lisp has compilers that produce code as efficient as C, so that
indeed the whole emacs could be rewritten in CL instead of C+elisp.
And this would allow the practical use of other user languages (such
as JavaScript or Python) to program emacs, since they can be, and are
implemented more efficiently in CL than in emacs lisp.
+--------+-------------------------------+
| now | in the future ----> |
+------------------------+--------+-------------------------------+
| user emacs code | elisp | elisp+CL+ejacs+clpython+... |
+------------------------+--------+-------------------------------+
| emacs packages (modes) | elisp | elisp+CL+ejacs+clpython+... |
+------------------------+--------+-------------------------------+
| emacs editing library | elisp | elisp ---> CL |
+------------------------+--------+-------------------------------+
| emacs primitives | C | CL |
+------------------------+--------+-------------------------------+
--
__Pascal Bourguignon__ http://www.informatimago.com/
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 23:36 ` About Emacs Modernisation Project Pascal J. Bourguignon
@ 2010-06-02 5:58 ` Evans Winner
0 siblings, 0 replies; 32+ messages in thread
From: Evans Winner @ 2010-06-02 5:58 UTC (permalink / raw)
To: help-gnu-emacs
pjb@informatimago.com (Pascal J. Bourguignon) writes:
I mostly agree with you, (and I'm letting me being
convinced that emacs lisp itself has some value for
casual "programmers"), nonetheless it occured to be
rather often that I had problems in my code because of
collision of dynamic variable or function names.
There is a great quote from Richard Stallman which you have
probably read:
Multics Emacs proved to be a great success --
programming new editing commands was so convenient that
even the secretaries in [Greenberg's] office started
learning how to use it. They used a manual someone had
written which showed how to extend Emacs, but didn't say
it was a programming. So the secretaries, who believed
they couldn't do programming, weren't scared off. They
read the manual, discovered they could do useful things
and they learned to program.[1]
To me this attribute seems to be the sine qua non of
extension languages. If it isn't easy enough that people
who either don't program for a living, or who do, but not in
Lisp can pick up enough to be useful relatively quickly,
then the language is not going to take off the way Emacs
Lisp has.
Common Lisp has compilers that produce code as efficient
as C, so that indeed the whole emacs could be rewritten
in CL instead of C+elisp. And this would allow the
practical use of other user languages (such as
JavaScript or Python) to program emacs, since they can
be, and are implemented more efficiently in CL than in
emacs lisp.
Yes, that makes sense. Playing Devil's Advocate for a
moment, though, I know Guile scheme is meant to run
JavaScript and Emacs Lisp and, I think, TCL. But how much
code really runs on it, and how much is written for it? And
if someone wrote a major package of TCL code to run on
Guile, how much support would it get from the Guile
developers or community? I find myself thinking that the
result is more likely just a dissipation of resources. Is
it really better to have an Emacs that nominally supports
ejacs and clpython and Common Lisp and TCL and Scheme and so
on, but really is only serious about Common Lisp -- or an
Emacs that really seriously supports one language: Emacs
Lisp, which is powerful, mature, easy to write and read, and
does what it is supposed to: text editing?
I sympathize with the desire to have a better, stronger,
lispier operating environment; perhaps a better answer is
the approach that I think the Climacs developers have taken:
not to put the mail reader and the chat client and so on
into the text editor, but to put the editor in the Lisp, and
let people write separate mail readers and such. With free,
multi-threading, cross-platform Common Lisp environments
this seems quite possible now. But if the goal is a large
user base and all the advantages which that can give, then I
still think that there will be a problem unless that
environment provides something on the level of simplicity
that Emacs Lisp provides; and in the case of Common Lisp, I
don't think that will happen without a major cultural shift
among CL hackers. Anyway, that's my sense of it.
Footnotes:
[1] Stallman, Richard. "My Lisp Experiences and the
Development of GNU Emacs."
http://www.gnu.org/gnu/rms-lisp.html
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-05-31 19:41 ` Alessandro Piras
[not found] ` <c41c63c0-b934-442d-8385-1abff6ab9b0b@s41g2000vba.googlegroups.com>
@ 2010-06-02 6:07 ` Xah Lee
[not found] ` <87iq63wsvt.fsf@kuiper.lan.informatimago.com>
2 siblings, 0 replies; 32+ messages in thread
From: Xah Lee @ 2010-06-02 6:07 UTC (permalink / raw)
To: help-gnu-emacs
On May 31, 12:41 pm, Alessandro Piras <lay...@gmail.com> wrote:
> > IMHO an alternative (but compatible ) eLISP-dialect simply allowing to
> > swap parens and functionnames and to write "message(...)" instead of
> > "(message...)" would increase the acceptance immidiately.
>
> Sounds Like M-expressions. It has been tried in the past in the Lisp world,
> without much success. Most programmers realize after few time the
> sweetness of S-expressions and macros. I think it would just lead to a
> small amount of M-expressions code that would be soon refactored as
> S-expressions.. Not worth the effort I suspect.
there are lisp languages with full M-expression and successful one at
that.
See the following articles for much detail and examples.
• The Concepts and Confusions of Prefix, Infix, Postfix and Fully
Nested Notations
http://xahlee.org/UnixResource_dir/writ/notations.html
• Fundamental Problems of Lisp
http://xahlee.org/UnixResource_dir/writ/lisp_problems.html
Xah
∑ http://xahlee.org/
☄
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
[not found] ` <87iq63wsvt.fsf@kuiper.lan.informatimago.com>
2010-06-01 0:06 ` LanX
@ 2010-06-02 6:17 ` Xah Lee
1 sibling, 0 replies; 32+ messages in thread
From: Xah Lee @ 2010-06-02 6:17 UTC (permalink / raw)
To: help-gnu-emacs
On May 31, 4:31 pm, p...@informatimago.com (Pascal J. Bourguignon)
wrote:
> Alessandro Piras <lay...@gmail.com> writes:
> > LanX <lanx.p...@googlemail.com> writes:
>
> >> Hi
>
> >> I doubt that Python would be a good choice, Perl for instance has much
> >> more in common with LISP.
>
> >> And I doubt that eLISP is the reason why many people have problems
> >> with emacs, it's more that many "modern" GUI mechanisms and
> >> terminologies are not default in emacs, which frustrates newbies.
>
> >> IMHO an alternative (but compatible ) eLISP-dialect simply allowing to
> >> swap parens and functionnames and to write "message(...)" instead of
> >> "(message...)" would increase the acceptance immidiately.
>
> > Sounds Like M-expressions. It has been tried in the past in the Lisp world,
> > without much success. Most programmers realize after few time the
> > sweetness of S-expressions and macros. I think it would just lead to a
> > small amount of M-expressions code that would be soon refactored as
> > S-expressions.. Not worth the effort I suspect.
>
> This is important to understand.
>
> Asking to write function(argument) in lisp, is like asking to write:
>
> int a[]=1{2,3,4};
>
> in C.
>
> Yes, 1{2,3,4} instead of {1,2,3,4} is totally silly in C. Why would
> you want to put the first element of a list of values outside of the
> list?
>
> It just happen that code is data and there is no more any point in
> putting the first element of a function application outside of the
> list.
>
> f(a,b,c) goes in most languages, because they make an artificial
> distinction between code and data, and the implication of this is that
> they need big parsers, and cannot mix compilation time with run time.
>
> But in lisp, since we write (f a b c) like we write (1 2 3 4), the
> parser becomes trivial, and the code can be processed as easily as any
> other data, therefore we can write macros (which are compiler hooks)
> and use the compiler at run-time.
>
> This feature is called "homoiconicity".
The above opinion is biased and basically bullshit.
The throwing in of the jargon homoiconicity is just to a sales pitch.
if you read Wikipedia:
http://en.wikipedia.org/wiki/Homoiconicity
you see this paragraph:
---------------
Languages which are considered to be homoiconic include members of the
Lisp family, Nemerle, Curl, REBOL, SNOBOL, XSLT, XQuery, TRAC, Tcl,
Io, Ioke, Joy, Factor, Pico, PostScript, Prolog, R, Mathematica, V
and Clojure.[citation needed]
In Von Neumann architecture systems (including the vast majority of
general purpose computers today), raw machine code also has this
property, the data type being bytes in memory.
----------------
So, this “homoiconicity” has little to do with lisp's syntax or
whatever it is supposed to be relevant.
also, note that XML also has lisp's advantage of regular syntax, and
there are computing langs based on xml syntax today. Note that lisp
syntax is not strictly regular. For a more regular syntax, there's XML
and Mathematica.
also, the oft quoted concept of “code is data” is seldom ever defined.
When asked a lisp, each has different take. Basically, it means
nothing more than a strictly uniform and regular syntax, which lisp's
isn't the better example among languages.
another thing lisp lovers inevitable love to cite is macros. Note
that, a whole class of languages that are based on pattern matching,
is a order of magnitude more powerful than classic lisps.
For detail, see:
• Fundamental Problems of Lisp
http://xahlee.org/UnixResource_dir/writ/lisp_problems.html
Xah
∑ http://xahlee.org/
☄
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
[not found] ` <slrni0b8nm.9k6.bergv@u00.math.uiuc.edu>
@ 2010-06-02 11:39 ` Pascal J. Bourguignon
0 siblings, 0 replies; 32+ messages in thread
From: Pascal J. Bourguignon @ 2010-06-02 11:39 UTC (permalink / raw)
To: help-gnu-emacs
Maarten Bergvelt <bergv@math.uiuc.edu> writes:
> On 2010-06-01, LanX <lanx.perl@googlemail.com> wrote:
>> But the lack of namespaces leads to very long names which IMHO
>> irritate newbies.
>> [...]
>> Snippets manipulating different aspects of font-lock would look less
>> intimidating, without the need to repeat "font-lock-" 20 times.
>
> Have you discovered the tab-key? I am an incompetent 2 finger typer,
> but with emacs I am pretty fast, as I can use all kinds of automatic
> completions.
>
> Having long identifiers makes them easier to understand, and only
> slightly harder to input.
I've got the impression (this of course would need experimental
input), that psychologically it's better indeed to have short names.
It's not a question of typing them, with or without completion; we
read much more than we write, usually.
If long names weren't a psychological problem there wouldn't be so
many acronyms, and even most of the words in our "natural" languages
are nothing but acronyms or abreviations, if you're to believe Edo
Nyland's theory.
http://www.linguistic-archaeology.eu/
http://www.amazon.com/Linguistic-Archaeology-Introduction-Edo-Nyland/dp/1552126684
Summary: http://www.faculty.ucr.edu/~legneref/bronze/nytheory.htm
Of course, short names lead to overloading, hence the need for
context. Happily, our brains work marvellously on contextual data.
This is what Common Lisp packages are and define: a context for the
names used in programs.
--
__Pascal Bourguignon__
http://www.informatimago.com
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 17:34 ` rustom
@ 2010-06-02 12:47 ` B. T. Raven
2010-06-02 17:20 ` rustom
0 siblings, 1 reply; 32+ messages in thread
From: B. T. Raven @ 2010-06-02 12:47 UTC (permalink / raw)
To: help-gnu-emacs
rustom wrote:
> On Jun 1, 1:40 pm, p...@informatimago.com (Pascal J. Bourguignon)
> wrote:
>> Evans Winner <tho...@unm.edu> writes:
>>> LanX <lanx.p...@googlemail.com> writes:
>>> No name spaces, no real lexical variables [...]
>>> These are not bugs, they are features. One uses the right
>>> tool for the job. It is highly unlikely that the language
>>> of choice for serious hackers working on developing large,
>>> complex systems is going to be the same language chosen for
>>> casual text editor users who want to quickly and simply
>>> customize some element of their editor.
>> Possibly. However, if emacs was reprogrammed in Common Lisp, you
>> could have both. Naive users could be provided with an environment
>> with only dynamic binding and a unique namespace, while sophisticated
>> programmers could use all the features of Common Lisp. Also, as
>> mentionned in another post, it would be easier to implement other
>> user-friend scripting languages in Common Lisp than in emacs lisp.
>>
>
> I remember seeing a paper (by a German I think) in which he claimed
> that he could *fully automatically* translate elisp to scheme. Does
> anyone remember this? [My google foo is not up-to-the-mark...]
It might have been this (out of Freiburg and Tuebingen, 2001):
http://www-pu.informatik.uni-tuebingen.de/users/sperber/papers/dynamic-scope-analysis.pdf
Anyway, there is menttion of the el2scm project.
Ed
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-01 10:28 ` Helmut Eller
2010-06-01 11:27 ` LanX
@ 2010-06-02 17:05 ` Xah Lee
2010-06-02 17:50 ` Helmut Eller
1 sibling, 1 reply; 32+ messages in thread
From: Xah Lee @ 2010-06-02 17:05 UTC (permalink / raw)
To: help-gnu-emacs
LanX [2010-06-01 01:33+0200] writes:
«
I really enjoyed reading this blog on ejacs
http://steve-yegge.blogspot.com/2008/11/ejacs-javascript-interpreter-for-emacs.html
»
On Jun 1, 3:28 am, Helmut Eller <eller.hel...@gmail.com> wrote:
«Why didn't he write the Javascript interpreter in Javascript? Or why
did he write a Javascript interpreter at all?»
Gah. Apparently you haven't spend much time reading the article.
Steve created it because he's creating a javascript mode for emacs,
with the goal of it being a full IDE beating any other javascript
IDEs.
That mode eventually became js2-mode. The js interpreter engine was a
discarded by-product, because he ends up writing another engine. The
name “ejacs” was attached to it later, and became a separate project,
currently of little practical use.
Steve has hinted in his blog, that he has the goal of making js a
alternative to elisp for extending emacs.
> The only interesting
> place to run and debug Javascript is inside a browser with complete DOM
> access anyway.
yes but not really. JS as a scripting lang is used in lots of
applications, in Flash, and lots others. (see wikipedia for full
list) Basically, it has became practically what Scheme used to be or
envisioned to be in academia, and replaced what perl, tcl, tried to be
in the industry in the 1990s.
Personally i think that's very good.
See:
• Proliferation of Computing Languages
http://xahlee.org/UnixResource_dir/writ/new_langs.html
Xah
∑ http://xahlee.org/
☄
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-02 12:47 ` B. T. Raven
@ 2010-06-02 17:20 ` rustom
0 siblings, 0 replies; 32+ messages in thread
From: rustom @ 2010-06-02 17:20 UTC (permalink / raw)
To: help-gnu-emacs
On Jun 2, 5:47 pm, "B. T. Raven" <ni...@nihilo.net> wrote:
> rustom wrote:
> > On Jun 1, 1:40 pm, p...@informatimago.com (Pascal J. Bourguignon)
> > wrote:
> >> Evans Winner <tho...@unm.edu> writes:
> >>> LanX <lanx.p...@googlemail.com> writes:
> >>> No name spaces, no real lexical variables [...]
> >>> These are not bugs, they are features. One uses the right
> >>> tool for the job. It is highly unlikely that the language
> >>> of choice for serious hackers working on developing large,
> >>> complex systems is going to be the same language chosen for
> >>> casual text editor users who want to quickly and simply
> >>> customize some element of their editor.
> >> Possibly. However, if emacs was reprogrammed in Common Lisp, you
> >> could have both. Naive users could be provided with an environment
> >> with only dynamic binding and a unique namespace, while sophisticated
> >> programmers could use all the features of Common Lisp. Also, as
> >> mentionned in another post, it would be easier to implement other
> >> user-friend scripting languages in Common Lisp than in emacs lisp.
>
> > I remember seeing a paper (by a German I think) in which he claimed
> > that he could *fully automatically* translate elisp to scheme. Does
> > anyone remember this? [My google foo is not up-to-the-mark...]
>
> It might have been this (out of Freiburg and Tuebingen, 2001):
>
> http://www-pu.informatik.uni-tuebingen.de/users/sperber/papers/dynami...
Yeah this may be it but now when I see it it says it cant handle eval.
The last time I saw it it said it could handle eval (at least thats
what I remember) because I remember finding it incredible
[Without trying to prove it, translating eval correctly would amount
to solving the halting problem. For those unfamiliar with CS
technicalities this is as anomalous as making say a perpetual motion
machine]
>
> Anyway, there is menttion of the el2scm project.
>
> Ed
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-02 17:05 ` Xah Lee
@ 2010-06-02 17:50 ` Helmut Eller
0 siblings, 0 replies; 32+ messages in thread
From: Helmut Eller @ 2010-06-02 17:50 UTC (permalink / raw)
To: help-gnu-emacs
* Xah Lee [2010-06-02 19:05+0200] writes:
> LanX [2010-06-01 01:33+0200] writes:
> «
> I really enjoyed reading this blog on ejacs
> http://steve-yegge.blogspot.com/2008/11/ejacs-javascript-interpreter-for-emacs.html
> »
>
> On Jun 1, 3:28 am, Helmut Eller <eller.hel...@gmail.com> wrote:
> «Why didn't he write the Javascript interpreter in Javascript? Or why
> did he write a Javascript interpreter at all?»
>
> Gah. Apparently you haven't spend much time reading the article.
>
> Steve created it because he's creating a javascript mode for emacs,
> with the goal of it being a full IDE beating any other javascript
> IDEs.
>
> That mode eventually became js2-mode. The js interpreter engine was a
> discarded by-product, because he ends up writing another engine. The
> name “ejacs” was attached to it later, and became a separate project,
> currently of little practical use.
So it turned out that writing a JS interpreter that runs inside Emacs is
totally useless. I could have told him that before.
Helmut
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: Emulating namespaces
[not found] ` <e73e123d-3f0c-4a6f-bbac-b91fb71bf07d@f14g2000vbn.googlegroups.com>
@ 2010-06-03 9:26 ` Pascal J. Bourguignon
2010-06-03 15:33 ` LanX
0 siblings, 1 reply; 32+ messages in thread
From: Pascal J. Bourguignon @ 2010-06-03 9:26 UTC (permalink / raw)
To: help-gnu-emacs
LanX <lanx.perl@googlemail.com> writes:
> I was meditating about how namespaces are realized in perl and now I'm
> wondering if this behaviour could be mimicked in elisp.
Actually, emacs has already the primitive mechanism needed to
implement packages. This can AFAIK be done entirely in emacs lisp.
If only it had reader macros, we could provide the pack::sym and
pack:sym syntax too (and correct the :keyword syntax).
Emacs lisp stores symbols in obarrays. The variable obarray is used
by intern, mapatom, etc.
So, basically:
(defvar *package-name-map* (make-hash-table :test (function equal)))
(defvar *list-all-packages* '())
(defun list-all-packages () (copy-list *list-all-packages*))
(defstruct (package (:constructor %make-package))
name
nicknames
use-list
used-by-list
shadowing-symbols
%obarray)
(defun* make-package (name &key nicknames uses size)
(assert (notany (function find-package) (cons name nicknames))
(name nicknames)
"There is already a package with the same name or nickname")
(let ((p (%make-package :name name
:nicknames nicknames
:use-list (or uses (find-package "EMACS-LISP"))
:%obarray (make-vector size nil))))
(push p *list-all-packages*)
(dolist (name (cons name nicknames))
(setf (gethash name *package-name-map*) p))
(internalize-used-symbols p)
p))
;; bootstrap the emacs-lisp package:
(defvar *package* (let ((p (%make-package :name "EMACS-LISP"
:nicknames '("ELISP")
:use-list '()
:%obarray obarray)))
(push p *list-all-packages*)
(dolist (name '("EMACS-LISP" "ELISP"))
(setf (gethash name *package-name-map*) p))
p))
(defmacro in-package (package-designator)
`(progn
(setf *package* (find-package ,package-designator))
(setf obarray (package-%obarray *package*))
*package*))
So, if you take care to always :use "EMACS-LISP" to always have access
to in-package, you can skip from one obarray to another for further
reading, because without modifying the reader, you cannot use
(elisp:in-package :elisp)
to come back.
You will need wrappers to map packages to obarray for function such
as intern.
Also, we could just use emacs-cl...
--
__Pascal Bourguignon__ http://www.informatimago.com/
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: Emulating namespaces
2010-06-03 9:26 ` Emulating namespaces Pascal J. Bourguignon
@ 2010-06-03 15:33 ` LanX
2010-06-03 17:41 ` Pascal J. Bourguignon
0 siblings, 1 reply; 32+ messages in thread
From: LanX @ 2010-06-03 15:33 UTC (permalink / raw)
To: help-gnu-emacs
do I get it right switching the package means that will bind variables
in the following code to different symbol tables?
> Also, we could just use emacs-cl...
ehm do you wanna tell me that (require 'cl) already provides support
for namespaces?
So why bother?
Could you plz show me some code that reflects the behavior of the perl
snippet I posted?
---------------
{
package Namespace;
our $var=666;
sub tst {print $var }
}
package Outerspace;
$var=42;
Namespace::tst(); # prints 666
---------------
I'd like to run some tests...
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: Emulating namespaces
2010-06-03 15:33 ` LanX
@ 2010-06-03 17:41 ` Pascal J. Bourguignon
0 siblings, 0 replies; 32+ messages in thread
From: Pascal J. Bourguignon @ 2010-06-03 17:41 UTC (permalink / raw)
To: help-gnu-emacs
LanX <lanx.perl@googlemail.com> writes:
> do I get it right switching the package means that will bind variables
> in the following code to different symbol tables?
>
>> Also, we could just use emacs-cl...
>
> ehm do you wanna tell me that (require 'cl) already provides support
> for namespaces?
No, it doesn't. emacs-cl is an implementation of Common Lisp written
in emacs lisp, like ejacs is an implementation of JavaScript written
in emacs lisp.
> So why bother?
>
> Could you plz show me some code that reflects the behavior of the perl
> snippet I posted?
>
>
> ---------------
> {
> package Namespace;
> our $var=666;
>
> sub tst {print $var }
>
> }
>
> package Outerspace;
>
> $var=42;
> Namespace::tst(); # prints 666
> ---------------
>
> I'd like to run some tests...
http://www.lisp.se/emacs-cl/
M-x load-library RET load-cl RET
M-x emacs-cl RET
and then in the *Emacs Common Lisp* buffer:
COMMON-LISP-USER> (defpackage :namespace (:use :cl))
#<PACKAGE "NAMESPACE">
COMMON-LISP-USER> (in-package :namespace)
#<PACKAGE "NAMESPACE">
NAMESPACE> (defvar *var* 888)
*VAR*
NAMESPACE> (defun test () (print *var*))
TEST
NAMESPACE> (defpackage :outerspace (:use :cl))
#<PACKAGE "OUTERSPACE">
NAMESPACE> (in-package :outerspace)
#<PACKAGE "OUTERSPACE">
OUTERSPACE> (defvar *var* 42)
*VAR*
OUTERSPACE> (namespace::test)
888
888
OUTERSPACE> (remove-if-not (lambda (b) (string-match ".*\.lisp" (buffer-name b))) (buffer-list))
OUTERSPACE> (list-all-packages)
(#<PACKAGE "OUTERSPACE"> #<PACKAGE "NAMESPACE"> #<PACKAGE "COMMON-LISP-USER"> #<PACKAGE "COMMON-LISP"> #<PACKAGE "EMACS-COMMON-LISP-MOP"> #<PACKAGE "EMACS-COMMON-LISP"> #<PACKAGE "EMACS-LISP"> #<PACKAGE "KEYWORD">)
OUTERSPACE> (remove-if-not (lambda (n)
(let ((len (length n)))
(when (< 3 len) (string= ".el" (subseq n (- len 3))))))
(mapcar (function emacs-lisp:|buffer-name|) (emacs-lisp:|buffer-list|)))
("cl-macs.el")
OUTERSPACE>
--
__Pascal Bourguignon__ http://www.informatimago.com/
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-05-31 23:33 ` LanX
2010-06-01 10:28 ` Helmut Eller
[not found] ` <87r5krh3e0.fsf@unm.edu>
@ 2010-06-04 18:33 ` Joseph Brenner
2010-06-05 2:55 ` Tim X
2 siblings, 1 reply; 32+ messages in thread
From: Joseph Brenner @ 2010-06-04 18:33 UTC (permalink / raw)
To: help-gnu-emacs
LanX <lanx.perl@googlemail.com> writes:
> I really enjoyed reading this blog on ejacs
>
> http://steve-yegge.blogspot.com/2008/11/ejacs-javascript-interpreter-for-emacs.html
Thanks, I'd missed that one somehow. Steve Yegge is always... interesting.
Some minor points:
I get the feeling he doesn't know about the pp.el package.
(I don't think he would be impressed if he did. He thinks
there's something nasty about perl's Data::Dumper, too.)
He doesn't understand the problem with cl.el. Using it in your
own code is indeed eminently "practical", but if you expect your
code to be included in the emacs core, you'll run into fears
born of the lack-of-encapsulation problem he talks about.
^ permalink raw reply [flat|nested] 32+ messages in thread
* Re: About Emacs Modernisation Project
2010-06-04 18:33 ` Joseph Brenner
@ 2010-06-05 2:55 ` Tim X
0 siblings, 0 replies; 32+ messages in thread
From: Tim X @ 2010-06-05 2:55 UTC (permalink / raw)
To: help-gnu-emacs
Joseph Brenner <doom@kzsu.stanford.edu> writes:
> LanX <lanx.perl@googlemail.com> writes:
>
>> I really enjoyed reading this blog on ejacs
>>
>> http://steve-yegge.blogspot.com/2008/11/ejacs-javascript-interpreter-for-emacs.html
>
> Thanks, I'd missed that one somehow. Steve Yegge is always... interesting.
>
> Some minor points:
>
> I get the feeling he doesn't know about the pp.el package.
> (I don't think he would be impressed if he did. He thinks
> there's something nasty about perl's Data::Dumper, too.)
>
> He doesn't understand the problem with cl.el. Using it in your
> own code is indeed eminently "practical", but if you expect your
> code to be included in the emacs core, you'll run into fears
> born of the lack-of-encapsulation problem he talks about.
>
I have seen quite a few posts regarding the fact using 'cl will prevent
you from being able to include your packages in emacs, but I'm not sure
that is strictly true.
I think that the actual restriction is that packages cannot be included
in emacs that use 'cl at runtime. However, it seems that its OK to use
them provided they are loaded at compile time and not runtime i.e. used
with eval-when-compile.
I just did a grep in the emacs lisp directory for (require 'cl)
and got over 80 hits! It seems a number of standard emacs packages do
in fact use 'cl. I didn't verify they were all only loaded at compile
time and not run time.
Tim
P.S. this was current emacs from bzr repo
--
tcross (at) rapttech dot com dot au
^ permalink raw reply [flat|nested] 32+ messages in thread
end of thread, other threads:[~2010-06-05 2:55 UTC | newest]
Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <143c6d28-4423-4e43-9fc5-c0fb3340043b@c11g2000vbe.googlegroups.com>
2010-05-31 15:44 ` About Emacs Modernisation Project Pascal J. Bourguignon
[not found] ` <0e994fe3-6dde-449f-879d-6701c7a195a9@e28g2000vbd.googlegroups.com>
2010-05-31 19:41 ` Alessandro Piras
[not found] ` <c41c63c0-b934-442d-8385-1abff6ab9b0b@s41g2000vba.googlegroups.com>
2010-06-01 0:40 ` Alessandro Piras
2010-06-02 6:07 ` Xah Lee
[not found] ` <87iq63wsvt.fsf@kuiper.lan.informatimago.com>
2010-06-01 0:06 ` LanX
2010-06-01 8:44 ` Pascal J. Bourguignon
2010-06-01 11:19 ` LanX
2010-06-01 12:56 ` Pascal J. Bourguignon
2010-06-02 6:17 ` Xah Lee
[not found] ` <87ljazofkn.fsf@rapttech.com.au>
2010-05-31 23:33 ` LanX
2010-06-01 10:28 ` Helmut Eller
2010-06-01 11:27 ` LanX
2010-06-01 12:29 ` Helmut Eller
2010-06-01 12:55 ` LanX
2010-06-01 12:59 ` Pascal J. Bourguignon
2010-06-01 12:59 ` Pascal J. Bourguignon
2010-06-02 17:05 ` Xah Lee
2010-06-02 17:50 ` Helmut Eller
[not found] ` <87r5krh3e0.fsf@unm.edu>
2010-06-01 8:40 ` Pascal J. Bourguignon
2010-06-01 17:34 ` rustom
2010-06-02 12:47 ` B. T. Raven
2010-06-02 17:20 ` rustom
2010-06-01 19:50 ` Stefan Monnier
2010-06-01 23:22 ` LanX
[not found] ` <slrni0b8nm.9k6.bergv@u00.math.uiuc.edu>
2010-06-02 11:39 ` Pascal J. Bourguignon
[not found] ` <e73e123d-3f0c-4a6f-bbac-b91fb71bf07d@f14g2000vbn.googlegroups.com>
2010-06-03 9:26 ` Emulating namespaces Pascal J. Bourguignon
2010-06-03 15:33 ` LanX
2010-06-03 17:41 ` Pascal J. Bourguignon
[not found] ` <87mxvegz12.fsf@unm.edu>
2010-06-01 23:36 ` About Emacs Modernisation Project Pascal J. Bourguignon
2010-06-02 5:58 ` Evans Winner
2010-06-04 18:33 ` Joseph Brenner
2010-06-05 2:55 ` Tim X
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).