Tim Bradshaw <t...@cley.com> writes: > * Dave Bakhash wrote:
> > However, Emacs Lisp is slow, and also ugly in several respects. This > > became apparent when things like web browsers were attempted in elisp.
> I think the only web browser I know of in elisp (namely emacs w3) is > slow for reasons that a profiler would help with a whole lot more than > a new language. Other than w3, whenever I've profiled emacs I've > discovered that it spends about 90% of its time in redisplay, in C > code.
yeah...I think that I once read that XEmacs (and I think Emacs too) uses its own redisplay engine. But I don't think that this is the problem with w3. w3 spends a vast amount of time parsing the HTML, and then another displaying it. The display engine runs through the parse tree, building the page as it goes. But the part that hurts is not in the C world AFAIK, because watching how many times XEmacs GC's while trying to display a page suggests some very inefficient garbage collection...another area where using a CL with a more efficient GC would do wonders.
Of course, then there's the question of how efficient the w3 code is.
d...@goldshoe.gte.com (Dorai Sitaram) writes: > In article <8765wri3dm....@acm.org>, Bulent Murtezaoglu <b...@acm.org> wrote: > > EN> I have desired /longevity/ of things for as long back as I > > EN> can remember.
> >You are in good company. Knuth does also (re: TeX).
> Well, do Common Lispers really like TeX?
This one does. If I want to have absolute, 100% control over everything, I don't use TeX, I use PostScript. But TeX is intended for setting type, and at that, I haven't found it deficient.
> Do they truly appreciate it for being a rock of reliability? I > rather got the impression that they felt that the "longevity by > fiat" that DeK imposed on it was an unfortunate thing, because he > prevented himself and others from going beyond the constraints of an > older era...
What "constraints of an older era" are you referring to? I use it all the time to make hyperlinked PDFs, so if you meant something in that area, it's all good. Honestly, I don't feel like I'm being held back in time at all, when using it[*].
[*] Says the man who writes his papers using Emacs and LaTeX on Unix ;) On the other hand, MS Word users never hear, "I really liked your exposition of such-and-such a point in this paper ... and it's so *pretty*, what did you write it in?"
-- /|_ .-----------------------. ,' .\ / | No to Imperialist war | ,--' _,' | Wage class war! | / / `-----------------------' ( -. | | ) | (`-. '--.) `. )----'
In article <ana13i$9a...@news.gte.com>, d...@gte.com wrote: >In article <8765wri3dm....@acm.org>, Bulent Murtezaoglu <b...@acm.org> wrote: >> EN> I have desired /longevity/ of things for as long back as I >> EN> can remember.
>>You are in good company. Knuth does also (re: TeX).
>Well, do Common Lispers really like TeX? Do they truly >appreciate it for being a rock of reliability? I >rather got the impression that they felt that the >"longevity by fiat" that DeK imposed on it was an >unfortunate thing, because he prevented himself and >others from going beyond the constraints of an >older era...
On pp. xviii-xix of CLtL, Steele thanks Knuth for TEX, Leslie Lamport for LATEX, and Blue Sky Research for their Macintosh implementation of TEX. This is in 1989.
I also recall reading that Steele was one of the early adopters of TEX many years before, but I have no reference for this.
> ... So anything that looks too different (and lots of the > x-in-21-days `books' look very different) is either badly designed or > well-designed but trying to do something other than get information > across.
i should mention a couple of books [assuming the topics are of any interest] that may get dropped on the floor because of their look, dimensions, title, typefaces, line spacing, grade of paper, illustrations, dumb icons and other non-content problems:
The Cartoon Guide to Statistics Larry Gonick and Woollcott Smith Harperparennial, 1993. [probably one of the finest books on statistics ever written and i even own a first edition freedman/pisani/purves...]
The Complete Idiot's Guide to Publishing Science Fiction Cory Doctorow and Karl Schroeder Alpha Books, 2000 [a very sharp, must-read book on becoming an SF writer and publishing what you write.]
[nothing in my CS shelves jump at me right now, though i think meyer's 2nd ed may have given a fluffier impression to an innocent browser than it actually is. on the other side, hopcroft/motwani/ullman "introduction to automata theory [etc]" is a money-making exercise with much reduced theory literacy and should be avoided while holding nose...]
oz -- the balance of the programmed signal. -- mark v. shaney
> On pp. xviii-xix of CLtL, Steele thanks Knuth for TEX, > Leslie Lamport for LATEX, and Blue Sky Research for > their Macintosh implementation of TEX. This is in 1989.
IIRC, that was CLtL2, which also said that the source of the first edition, written in Scribe, was converted into LaTeX by a throwaway program.
d...@goldshoe.gte.com (Dorai Sitaram) writes: > Editors are some of the most commonly created software > artifacts, and they always seem to find users. A > Scheme-based editor that is almost exactly like Emacs > would almost certainly find a considerable niche, > what with the Scheme users around. Of course, it > doesn't have to be The replacement for Emacs.
I admitted to laziness, so now, I'll admit to selfishness as well: I'd rather that people write more elisp modules (or enhance existing ones) from which _I_ can benefit than re-implement existing functionality in yet another editor.
Erik Naggum <e...@naggum.no> replied: +--------------- | [...nicely bulleted list...] +---------------
Thank you! That was exactly the sort of terse overview I was hoping for.
+--------------- | Things that the SGML community think are important, but which only | detract from the real issues and confuse people tremendously: | | · attributes to elements, notations, entities. | · attribute types +---------------
Well, this list has certainly talked about *that* one enough before. ;-} Clearly, since a DTD can specify that some subset of sub-elements (in arbitrary order) *must* come before all the other permitted sub-elements, then "attributes" could just as easily be expressed as sub-elements with restrictions on order, much like declarations and documentation strings in CL, yes?
+--------------- | | ...verbose way of externally representing (serializing) trees | | (though not DAGs or more complex structures), and which S-exprs | | do a much better job of (especially if you allow "#n=" & "#n#" ...) | | The rank incompetence of SGML and XML aficionados has led people to believe | that the syntax cannot represent anything more complex than simple trees. | This is just as wrong as claiming that Common Lisp cannot express circular | lists and other forms of reused objects to preserve identity throughout the | printed form of a structured. Using ID and IDREF is exactly analogous to | using #n= and #n#. +---------------
Aha! That's what I get for not having read the actual SGML specs, I guess.
+--------------- | (And just as they have special syntax in Common Lisp, they should have | special syntax in an attribute-free SGML. It is the only thing that | /needs/ attributes in the SGML syntax.) +---------------
I need to think about that one a bit more (and maybe go read some more). At the moment, it's certainly plausible to me that IDREF might need special syntax, but it seems like one might to be able to provide ID (albeit rather awkwardly!) with attribute-free elements [as above].
Anyway, thanks again for the concise summary,
-Rob
----- Rob Warnock, PP-ASEL-IA <r...@rpw3.org> 627 26th Avenue <URL:http://www.rpw3.org/> San Mateo, CA 94403 (650)572-2607
* Rob Warnock wrote: > Well, this list has certainly talked about *that* one enough before. > ;-} Clearly, since a DTD can specify that some subset of > sub-elements (in arbitrary order) *must* come before all the other > permitted sub-elements, then "attributes" could just as easily be > expressed as sub-elements with restrictions on order, much like > declarations and documentation strings in CL, yes?
We have had various fights with clients about just this kind of thing. We have a system where define `modules', which are essentially conceptual units of <something> in a build system. Modules have various parameters such as dependencies, names, and so on. The native syntax is completely regular and looks like:
(idl-files (:name "f1" ...) ...)
And lo and behold this ends up as something like:
(let ((m (make-instance 'idl-files :name "f1" ...))) (loop for b in body do (add-item-for m b)) m)
(in fact it's a lot more complex than this, but this is the idea).
So of course the `natural' XML version of this is:
<idl-files name="f1">...</idl-files>
So people complained bitterly when we did this as:
So why did we do it like that? Because XML attributes can't have structured data, so if you want, say, a list of things in an attribute, you have to write your own little parser, oh joy. And (not in the examples above) we *do* have structured data.
What we ended up with was a hack that looked for XML attributes and translated them to parameters with stringy values.
* Rob Warnock | Thank you! That was exactly the sort of terse overview I was hoping for.
Happy to oblige, but I think I should whip up a web page on this now that I think I got it reasonably right. The standing-on-one-leg stunt is hard.
| Clearly, since a DTD can specify that some subset of sub-elements (in | arbitrary order) *must* come before all the other permitted sub-elements, | then "attributes" could just as easily be expressed as sub-elements with | restrictions on order, much like declarations and documentation strings | in CL, yes?
There is a crucial difference between attributes and subelements today that needs to be taken care of in an attribute-free SGML. Attributes are local to their element and therefore can be the same name as an element. They could also differ in type from element to element, which translates to a different content model or notation as an element.
| | Using ID and IDREF is exactly analogous to using #n= and #n#. | | Aha! That's what I get for not having read the actual SGML specs, I guess.
But you may need to know #n= and #n# and that they are analogous to see this because the application gets to maintain its own table of IDs and map the IDREFs back to them, which is kind of unfortunate. Grasping that this can be used for circular structures is apparently hard for SGMLers when they have only learned to think of them in "See Figure 1" terms.
| I need to think about that one a bit more (and maybe go read some more). | At the moment, it's certainly plausible to me that IDREF might need | special syntax, but it seems like one might to be able to provide ID | (albeit rather awkwardly!) with attribute-free elements [as above].
One curious effect of moving from attributes to elements is that quite often, the best design is to let the attribute become a superelement instead of a subelement.
-- Erik Naggum, Oslo, Norway
Act from reason, and failure makes you rethink and study harder. Act from faith, and failure makes you blame someone and push harder.
In article <868z1i7gmb....@gondolin.local.net>, Alain Picard <apicard+die-spammer-...@optushome.com.au> wrote:
>I admitted to laziness, so now, I'll admit to selfishness >as well: I'd rather that people write more elisp modules >(or enhance existing ones) from which _I_ can benefit than >re-implement existing functionality in yet another editor.
Erik Naggum <e...@naggum.no> wrote: +--------------- | * Rob Warnock | | "attributes" could just as easily be expressed as sub-elements with | | restrictions on order, much like declarations and documentation strings | | in CL, yes? | | There is a crucial difference between attributes and subelements today | that needs to be taken care of in an attribute-free SGML. Attributes are | local to their element and therefore can be the same name as an element. | They could also differ in type from element to element, which translates | to a different content model or notation as an element. +---------------
Good point. And also, as Tim Bradshaw pointed out in a parallel reply <URL:news:ey3u1k6uyv1.fsf@cley.com>, attributes are not permitted to have sub-structure[1], while sub-elements may.
[1] Well, not *standard*, DTD-defined sub-structure, that is, though as Tim noted, one can always hack up an ad-hoc serialization of the sub-structure into the string value of an attribute... (*ugh!*)
+--------------- | | | Using ID and IDREF is exactly analogous to using #n= and #n#. | | | | Aha! That's what I get for not having read the actual SGML specs, I guess. | | But you may need to know #n= and #n# and that they are analogous to see | this because the application gets to maintain its own table of IDs and | map the IDREFs back to them, which is kind of unfortunate. +---------------
Do you mean that the application is allowed to merge (remapping as needed) IDs/IDREFs from *multiple* documents? ...or *across* multiple docs? [Otherwise I don't see where any "table" or "mapping" is needed, other than just the one necessary for #n=/#n# processing during the READ.]
Hmmm... The corresponding thing in CL might be trying to reference the same #n=/#n# numbers across multiple occurrences of READ. Normally, that wouldn't be a problem (because it's not possible), but my twisted little brain just started wondering about how #n= & #n# might interact with #. in pathological cases, as in:
Well, maybe that's not a good example -- both CLISP & CMUCL handle it, yielding (FOO BAR (A B C B D) GORP BAR BLAH) -- but *this* one, maybe:
#1=(foo bar #.(read-from-string "#1=(a b c #1# d)") gorp #1# blah)
CLISP handles it this way [assuming (setq *print-circle* t), else it core-dumps]:
> '#1=(foo bar #.(read-from-string "#1=(a b c #1# d)") gorp #1# blah) #1=(FOO BAR #2=(A B C #2# D) GORP #1# BLAH) >
While CMUCL complains:
Reader error at 3 on #<String-Input Stream>: Multiply defined label: #1=
O.k., CLHS "2.4.8.15 Sharpsign Equal-Sign" says:
The scope of the label is the expression being read by the outermost call to read; within this expression, the same label may not appear twice.
So perhaps in CLISP's case the READ-FROM-STRING instance causes a completely different instance of READ (and thus the two #1= aren't "the same") and in CMUCL's case READ-FROM-STRING "knows" it's inside an active READ and (legitmately) tosses an error.
But then why does CMUCL *accept* the first form at all?!? They both have the same "outermost call to read"...
+--------------- | Grasping that this can be used for circular structures is apparently | hard for SGMLers when they have only learned to think of them in | "See Figure 1" terms. +---------------
*ROTFLMAO!* Yes, I know what you mean, but... Does "See Figure 1" have the same alternate meaning for you guys over there as it does around here?!? ;-} ;-}
+--------------- | | I need to think about that one a bit more (and maybe go read some more). | | At the moment, it's certainly plausible to me that IDREF might need | | special syntax, but it seems like one might to be able to provide ID | | (albeit rather awkwardly!) with attribute-free elements [as above]. | | One curious effect of moving from attributes to elements is that quite | often, the best design is to let the attribute become a superelement | instead of a subelement. +---------------
Yeah, I was starting to think in that direction, since it reduces the number of levels of nesting you need in the common case of only one attribute. It's much like CL WITH-XXX macros, in that way. (And why am I suddenly thinking of CLOS "around" methods, too? ;-} )
-Rob
----- Rob Warnock, PP-ASEL-IA <r...@rpw3.org> 627 26th Avenue <URL:http://www.rpw3.org/> San Mateo, CA 94403 (650)572-2607
Dorai Sitaram wrote: > Editors are some of the most commonly created software > artifacts, and they always seem to find users. A > Scheme-based editor that is almost exactly like Emacs > would almost certainly find a considerable niche, > what with the Scheme users around. Of course, it > doesn't have to be The replacement for Emacs.
Somehow the word `edwin' keeps coming to mind. Wasn't that virtually an emacs clone in scheme? How complete was it? I thought it ran elisp.
-- Fred Gilham gil...@csl.sri.com || GOVERNMENT: A large charity organization with a coercive fund-raising arm. PUBLIC SCHOOLS: Government-run (see above) schools with coercive admissions departments.
In an attempt to throw the authorities off his trail, Fred Gilham <gil...@snapdragon.csl.sri.com> transmitted:
> Dorai Sitaram wrote: >> Editors are some of the most commonly created software artifacts, >> and they always seem to find users. A Scheme-based editor that is >> almost exactly like Emacs would almost certainly find a >> considerable niche, what with the Scheme users around. Of course, >> it doesn't have to be The replacement for Emacs.
> Somehow the word `edwin' keeps coming to mind. Wasn't that > virtually an emacs clone in scheme? How complete was it? I thought > it ran elisp.
"This chapter describes how to start Edwin, the MIT Scheme text editor. Edwin is very similar to GNU Emacs -- you should refer to the GNU Emacs manual for information about Edwin's commands and key bindings --- except that Edwin's extension language is MIT Scheme, while GNU Emacs extensions are written in Emacs Lisp. This manual does not discuss customization of Edwin."
Edwin is "sufficiently complete" that it will read your existing Info configuration, and can browse Info files.
There does not appear to be any guide to writing extensions.
It /does/ have modes for C and Scheme, so the "lack of language modes" is about the notion of it not having Great Gobs of Modes. -- (concatenate 'string "cbbrowne" "@cbbrowne.com") http://www3.sympatico.ca/cbbrowne/spreadsheets.html Would-be National Mottos: Switzerland: "You wouldn't hit a country that's neutral, would you?"
n...@vanderbilt.edu (sv0f) writes: > I also recall reading that Steele was one of the early > adopters of TEX many years before, but I have no > reference for this.
Knuth, Digital Typography, p. 648
In the 70s, I had a negative reaction to software that tried to be all things to all people. Every system I looked at had its own universal Turing machine built into it somehow, and everybody's machine was a little different from everybody else's. So I thought, "Well, I'm not going to design a programming language; I want to have just a typesetting language." Little by little, however, I needed more features and so the programming constructs grew. Guy Steele began lobbying for more capabilities early on, and I put many such things into the second version of TeX, TeX82, because of his urging.
-- Hai koe, zei de stier, Kom mee met mij in de wei, Dan zijn we tweezaam. Lieven Marchand <m...@wyrd.be>
In article <877kh2dq8t....@wyrd.be>, Lieven Marchand <m...@wyrd.be> wrote: >n...@vanderbilt.edu (sv0f) writes:
>> I also recall reading that Steele was one of the early >> adopters of TEX many years before, but I have no >> reference for this.
>Knuth, Digital Typography, p. 648
>In the 70s, I had a negative reaction to software that tried to be all >things to all people. Every system I looked at had its own universal >Turing machine built into it somehow, and everybody's machine was a >little different from everybody else's. So I thought, "Well, I'm not >going to design a programming language; I want to have just a >typesetting language." Little by little, however, I needed more >features and so the programming constructs grew. Guy Steele began >lobbying for more capabilities early on, and I put many such things >into the second version of TeX, TeX82, because of his urging.
The collective memory of the group is a wonderful thing. Thanks.
* Rob Warnock | Good point. And also, as Tim Bradshaw pointed out in a parallel reply | <URL:news:ey3u1k6uyv1.fsf@cley.com>, attributes are not permitted to have | sub-structure[1], while sub-elements may.
Well, actually, you can provide a NOTATION argument for attribute values. This would indicate the standard or other document specifying the syntax of the value, and the application would presumably know how to deal with this. Also, there are actually some attribute types that require a flat list of whitespace-separated values in the actually attribute value.
| Do you mean that the application is allowed to merge (remapping as | needed) IDs/IDREFs from *multiple* documents? ...or *across* multiple | docs?
ID and IDREF have many conflated uses. IDREF can only refer to IDs in the same document instance, but with other mechanisms, you can refer to elements with a given ID.
| The corresponding thing in CL might be trying to reference the same | #n=/#n# numbers across multiple occurrences of READ. Normally, that | wouldn't be a problem (because it's not possible), but my twisted little | brain just started wondering about how #n= & #n# might interact with | #. in pathological cases, as in:
I would have thought it fairly obvious that (list #.(foo #1=bar) #1#) must fail, and it did not appear any less obvious that (list #1=foo #.(foo #1#)) must fail. However, this is wrong. They work fine in Allegro CL, CLISP and CMUCL (and SBCL). Hmm.
However, when you call a `read´ function without a true `recursive-p´ argument, that should mean that it establishes a new #n# context.
| +--------------- | | Grasping that this can be used for circular structures is apparently | | hard for SGMLers when they have only learned to think of them in | | "See Figure 1" terms. | +--------------- | | *ROTFLMAO!* Yes, I know what you mean, but... Does "See Figure 1" | have the same alternate meaning for you guys over there as it does | around here?!? ;-} ;-}
Yes, and it was intentional. (I always appreciate it when people "get" such jokes.) I initially wrote "See Chapter 42" but that was hackneyed and not entertaining at all.
-- Erik Naggum, Oslo, Norway
Act from reason, and failure makes you rethink and study harder. Act from faith, and failure makes you blame someone and push harder.
On Mon, 30 Sep 2002 08:34:08 -0000, r...@rpw3.org (Rob Warnock) wrote: > In the "replace EMACS LISP with Guile" thread, > Erik Naggum <e...@naggum.no> wrote: [...] > | It takes considerable time to understand this, however. If you do /not/ > | grasp the core ideas behind SGML and XML, you will probably invent > | something worse, such as an ad-hoc binary format... > +---------------
> I'm very interested in learning what these "core ideas" are, since I
Erik also answered a similar question by me. See the comp.lang.lisp article with Message-ID <3239282082503...@naggum.no>.
Tim Bradshaw <t...@cley.com> writes: > * Dave Bakhash wrote: > > Of course, then there's the question of how efficient the w3 code is.
> yes, that was my point. I looked at it (briefly), and it's not good.
Now, as I recall, there is a Web browser that was out a couple of years ago, written in CL (I think under ACL). If Emacs could handle CL, then it could actually just plug in. That would have been nice.
Does anyone recall this CL browser? Anyone ever use it?
Dave Bakhash <ca...@alum.mit.edu> writes: > Tim Bradshaw <t...@cley.com> writes:
>> * Dave Bakhash wrote: >> > Of course, then there's the question of how efficient the w3 code is.
>> yes, that was my point. I looked at it (briefly), and it's not good.
> Now, as I recall, there is a Web browser that was out a couple of years > ago, written in CL (I think under ACL). If Emacs could handle CL, then > it could actually just plug in. That would have been nice.
> Does anyone recall this CL browser? Anyone ever use it?
I think it was called closure, but I never used it. Got this link from google:
Timmy Douglas <gtg2...@mail.gatech.edu> writes: > Dave Bakhash <ca...@alum.mit.edu> writes: >> Does anyone recall this CL browser? Anyone ever use it?
> I think it was called closure, but I never used it. Got this link from > google:
Current versions of closure are considerably changed from what you see on that web page: it's now CLIM-based, and Gilbert Baumann (the author) is also hacking on McCLIM (a.k.a FreeCLIM). Gilbert gave a presentation on it at the Libre Software Meeting 2002, and there are a few screenshots of it at http://ww.telent.net/cliki/Screenshots
> It looks like it has it's own gui so I'm not sure if it would simply > plug into emacs.
I'm not sure why you'd want to plug a web browser into emacs any more than you'd want to plug, say, a mua or usenet reader into emacs.
Daniel Barlow <d...@telent.net> writes: > I'm not sure why you'd want to plug a web browser into emacs any more > than you'd want to plug, say, a mua or usenet reader into emacs.
The reason for all these is the same: when composing messages, articles, form fields in web forms, etc, you have the most powerful editor at your command. In this respect, emacs users have had the true IDE all along, and don't need to remember 27 ways of doing the same thing in 27 different applications.
Alain Picard <apicard+die-spammer-...@optushome.com.au> writes: > Daniel Barlow <d...@telent.net> writes:
>> I'm not sure why you'd want to plug a web browser into emacs any more >> than you'd want to plug, say, a mua or usenet reader into emacs.
> The reason for all these is the same: when composing messages, > articles, form fields in web forms, etc, you have the most > powerful editor at your command. In this respect, emacs users > have had the true IDE all along, and don't need to remember > 27 ways of doing the same thing in 27 different applications.
I think I knew that. What I was getting at, though (and obviously didn't make clear) is that "plug $foo into your text editor" is essentially an inside-out view of the world, and as a general concept I would far rather be able to plug my text editor into $foo.
Of course, this is emacs we're talking about, so the argument for doing it in this inside-out fashion is usually more compelling. It isn't the text editor as such you want to embed in, it's the rich dynamic environment (GC, runtime typing, interactive evaluation) which is (a) better than anything Unix typically offers, (b) rather too "heavyweight" to blithely embed into another application without feeling some twinge of guilt. And of course, (c) allows you to edit text with _all_ your favourite gestures (a curse on whichever Mozilla developer thought it would be funny to support C-k but not C-y ...)
In this specific case, though, we're talking about a Lisp app as the other partner in this symbiosis. Closure runs in a _really_ rich (and heavyweight) dynamic environment with generational GC, threading, CLX, CLIM, etc (I believe that the McCLIM text editing component is destined to end up looking pretty emacsy). So all I'm saying, really, is "let's pause for a minute to consider which component is on top in this relationship"
Daniel Barlow <d...@telent.net> writes: > I think I knew that. What I was getting at, though (and obviously > didn't make clear) is that "plug $foo into your text editor" is > essentially an inside-out view of the world, and as a general concept > I would far rather be able to plug my text editor into $foo.
I guess there's always export EDITOR=emacsclient for that.
> In this specific case, though, we're talking about a Lisp app as the > other partner in this symbiosis. [snip] So all I'm saying, really, > is "let's pause for a minute to consider which component is on top in > this relationship"
Yes, but the earlier context of this was that we might be talking about an emacs whose lisp was CL (hence the desire to embed closure instead of the (slow) w3 code). If I misunderstood, my apologies.
On 03 Oct 2002 18:44:17 -0400, Dave Bakhash <ca...@alum.mit.edu> wrote:
> Now, as I recall, there is a Web browser that was out a couple of years > ago, written in CL (I think under ACL). If Emacs could handle CL, then > it could actually just plug in. That would have been nice.
> Does anyone recall this CL browser? Anyone ever use it?
Do you mean Closure by Gilbert Baumann? It is still maintained, and it is based on CLIM and runs fine also with McCLIM.