Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

To Paul Graham: Please put your books online.

100 views
Skip to first unread message

Thaddeus L Olczyk

unread,
May 14, 2001, 5:40:17 PM5/14/01
to
This is an open letter to Paul Graham concerning his
two books: Ansi Common Lisp and On Lisp.

Paul,
I am writing this to make a request of you. If you find that
there is no way that your books will be in print once again,
of if the likelyhood is that they will not, then please make some
viewable/readable form of these books available on the web.

I suggest this for the good of the Lisp community. There is still
a large demand for your books, to the point where one person has
offered ( and paid ) $200 for a copy of "On Lisp" in the
comp.lang.lisp newsgroup. Another person has put the books up
for auction. Should this continue, then employers who get wind
may be hesitant to use Lisp on projects for fear that new developers
may not be able to get materials needed to learn Lisp.

I point out that this is not unprecedented. In general books have
been made available on the web ( Bruce Eckel offers virtually
everything he writes even those still in print, allthough I will grant

I don't think highly of him. Allan Holub publishes many of the
magazine articles he writes. In the lisp community, David S. Touretzky
has made his book available on the web. )

I should note that for me this is of minor consequence. I have found
a nearby university library that has both books. I can go read it as
necessary ( of course I would never make a photocopy of the books
as a whole ). To have online copies of the books would only be a minor
convienence. But for many others it would be a godsend.

Of course, if your books will soon be in print, the point will be
moot.
Thank you for your time.
Thaddeus L. Olczyk


Deepak Goel

unread,
May 14, 2001, 7:51:34 PM5/14/01
to
> This is an open letter to Paul Graham concerning his
> two books: Ansi Common Lisp and On Lisp.

I second that.

When I could not find On Lisp, (which i am still looking for), I wrote
to Paul Graham requesting him to either send me a .tex or a .ps as
convenient, and offered to pay the price... that was about a month
ago, and i still open my gnus every morning longing for a reply.. :)

Now, Dr. Graham must be busy, which i understand, but i would also
appreciate if he puts the books online..

But if he has sold the rights to the publisher, would it be legal?

--Deepak, http://www.glue.umd.edu/~deego
The only true faith in True Editor's sight is EMACS.

cbbr...@hex.net

unread,
May 14, 2001, 8:07:02 PM5/14/01
to
olc...@interaccess.com (Thaddeus L Olczyk) writes:
> This is an open letter to Paul Graham concerning his
> two books: Ansi Common Lisp and On Lisp.

> I am writing this to make a request of you. If you find that there

All of this would be predicated on the question of whether Paul Graham
retains republication rights, or whether those rights are held in
Prentice Hall's hands.

It is _far_ more likely that PH holds the rights, and that Graham does
not have the option of "freeing" the texts.

By the way, if he _were_ free to republish the books, it would be
worth taking a look at <http://publishyourbook.iuniverse.com/>, or at
finding some press willing to do small quantities, and then "webbify
it," handling payments via PayPal.
--
(concatenate 'string "cbbrowne" "@ntlug.org")
http://vip.hyperusa.com/~cbbrowne/resume.html
Warning: Dates in calendar are closer than they appear.

Tim Bradshaw

unread,
May 15, 2001, 4:56:27 AM5/15/01
to
olc...@interaccess.com (Thaddeus L Olczyk) writes:

> I am writing this to make a request of you. If you find that
> there is no way that your books will be in print once again,
> of if the likelyhood is that they will not, then please make some
> viewable/readable form of these books available on the web.
>

Whether he can do this depends on what rights he has over them. I
just checked in On Lisp, and it's copyright Prentice-Hall. There will
be some legal agreement covering the assignment of copyright to PH,
and it's very unlikely to be the case that PG, or anyone, can put them
up on the web without some non-trivial legal goings-on.

--tim

Kent M Pitman

unread,
May 15, 2001, 8:44:58 AM5/15/01
to
[Rant alert.]

Maybe it's just me, but I find this a remarkably irritating thread.

Certainly it's a possible thing for someone to give away intellectual
property, but it feels to me like the whole discussion presupposes that
his only rational or polite or reasonable course of action is to make
the book more available. I don't see that.

The apparent thirst on this newsgroup for pursuing a "gimme free stuff"
seriously irks me. It's one thing to appreciate free stuff that comes
out (whether it's implementations, libraries, documentation, or text books).
It's quite another to start demanding that people turn profit-making
ventures into non-profit-making ones.

It might be, indeed, that he just doesn't care about the revenue from
the book any more, and it might be he'll web his book.

It might be that he does care and that the publisher has a threshold
of how many requests for the book it wants before it will do a second
print run.

It might be that he's very busy and plans to put the book online already
and you're robbing him of the opportunity to have volunteered the action.

It migth be that he's very busy and plans to republish the book when he
gets the chance.

But it's his book, and his right to do with it as he wishes. And
meanwhile, there are others with books that need buying to support
other authors.

It's fine for one person to make a provate for someone to make a
magnanimous gesture, but making it a public topic of discussion puts
the author in the awkward position of having to either submit to the
demand or sound like some sort of weasel for saying "thanks, but I'd
prefer to retain the right to make money off of that--even if I don't
get that money today". And even if this particular author is capable
of making the gesture you want, it appears to set the precedent that
others would and should make a similar gesture. I don't think that's
reasonable or fair and I wish to publicly dissociate myself from any
bandwagon effort to chant to Paul "give us your book".

If/when he does it, that will of course be well-received. But if it
doesn't happen, that's his or his publisher's every right, *AND* it's
even good for us:

You may, by the way, think that a publisher is just a nameless entity
that is profiteering off of our community. But I *want* publishers to
make as much money off of our community's books as they can because it
means they are likely to think of books on Lisp as profit-making
ventures rather than charity, and it makes them more likely to publish
more in the future rather than just to assume that all profit-making on
Lisp was to be done in the past.

raj

unread,
May 15, 2001, 8:56:56 AM5/15/01
to
>The apparent thirst on this newsgroup for pursuing a "gimme free stuff"
>seriously irks me.

There was a post from a person who offered to buy the tex or
postscript file from PG but recieved no reply.

>It might be, indeed, that he just doesn't care about the revenue from
>the book any more

That is likely.
After all, he did sell his company for 40 million $ to Yahoo....

>It migth be that he's very busy and plans to republish the book when he
>gets the chance.

Good reason to post these messages, dont you think ?


>But it's his book, and his right to do with it as he wishes. And
>meanwhile, there are others with books that need buying to support
>other authors.

>You may, by the way, think that a publisher is just a nameless entity
>that is profiteering off of our community. But I *want* publishers to
>make as much money off of our community's books as they can

Hmm....
Brain Research ( published by Springer Verlag ) is currently 17,000 $
for a one year subscription. Guess which journal our library will not
be subscribing to this year....

Janis Dzerins

unread,
May 15, 2001, 10:01:05 AM5/15/01
to
raj <isra...@optushome.com.au> writes:

> >The apparent thirst on this newsgroup for pursuing a "gimme free stuff"
> >seriously irks me.
>
> There was a post from a person who offered to buy the tex or
> postscript file from PG but recieved no reply.

And do you also know why it was a *post* instead of a private mail?

> >It might be, indeed, that he just doesn't care about the revenue from
> >the book any more
>
> That is likely.
> After all, he did sell his company for 40 million $ to Yahoo....

Yeah. Looks like you like counting someone else's money. That does not
change anything, does it?

--
Janis Dzerins

If million people say a stupid thing it's still a stupid thing.

raj

unread,
May 15, 2001, 10:21:50 AM5/15/01
to
On 15 May 2001 17:01:05 +0300, Janis Dzerins <jo...@latnet.lv> wrote:

>> There was a post from a person who offered to buy the tex or
>> postscript file from PG but recieved no reply.
>
>And do you also know why it was a *post* instead of a private mail?

When I last checked, telepathy was not listed on my cv.

>> >It might be, indeed, that he just doesn't care about the revenue from
>> >the book any more
>> That is likely.
>> After all, he did sell his company for 40 million $ to Yahoo....

>Yeah. Looks like you like counting someone else's money.

No, I am providing objective data that corroborates a statement made
by another person.

Perhaps you need a new parser....

Kent M Pitman

unread,
May 15, 2001, 10:25:23 AM5/15/01
to
raj <isra...@optushome.com.au> writes:

> There was a post from a person who offered to buy the tex or
> postscript file from PG but recieved no reply.

This does not seem relevant to me. It is the right of any of us to write
to an author or publisher if we can find an address. It is not our right
to demand an answer, nor to infer anything from the lack of an answer.

> >It might be, indeed, that he just doesn't care about the revenue from
> >the book any more
>
> That is likely.
> After all, he did sell his company for 40 million $ to Yahoo....

That may have been for stock. We don't know if he cashed it at the
right time. We also don't know what part is/was liquid. We don't know
if he spent it on a house which has premium payments due that in today's
lagging economy are hard to make. We don't know if he blew it in Las Vegas.
We don't know what any of his financial commitments are. Nor are they any
of our business even if we did know.

What we do know is that he has an item of value and that people are rallying
to say he should put it up for free. Again, let me repeat: Fine for an
individual to say in private mail. Bad to do in public.

It is simply inappropriate to assume that even millionaires don't have
to eat. It is highly rude for any of us to speculate and presume in
the kind of fashion that you appear to be presuming by your remark about
his having made money on some other enterprise.

> >It migth be that he's very busy and plans to republish the book when he
> >gets the chance.
>
> Good reason to post these messages, dont you think ?

No. Absolutely not. This is like proposing to someone on TV. It may be
very romantic if the person wants to say "yes" but you'd better be darned
sure that's what they plan to say before you do it. Otherwise, it is a huge
public embarrassment that you have no right to turn on them because everyone
gets to watch the person being asked the question give a disappointing answer
and that person feels like a jerk.

> >You may, by the way, think that a publisher is just a nameless entity
> >that is profiteering off of our community. But I *want* publishers to
> >make as much money off of our community's books as they can
>
> Hmm....
> Brain Research ( published by Springer Verlag ) is currently 17,000 $
> for a one year subscription. Guess which journal our library will not
> be subscribing to this year....

I don't understand why this is relevant. People boycott items priced
too high. Are you saying you're boycotting PG's book and that you'll
continue to do so until it's free? I doubt it. If you were, that would be
a statement that the book was worthless. This is a discussion about a book
that is believed to be worth something to people. And my point is that
when something is worth something to someone, it is the right of the creator,
of all people, to assert that worth.

cbbr...@hex.net

unread,
May 15, 2001, 10:49:49 AM5/15/01
to
raj <isra...@optushome.com.au> writes:
>>The apparent thirst on this newsgroup for pursuing a "gimme free
>>stuff" seriously irks me.

> There was a post from a person who offered to buy the tex or
> postscript file from PG but recieved no reply.

.. And is Graham under obligation to respond to every email he
receives?

>>It might be, indeed, that he just doesn't care about the revenue from
>>the book any more

> That is likely. After all, he did sell his company for 40 million $
> to Yahoo...

I'd think the revenue wouldn't be of _too_ much importance, but would
find it remarkable if this were the primary reason that he wrote the
books in the first place.

Most of the people that produce the really _great_ technical books
wrote them in order to attain riches. I'm quite sure Donald Knuth did
_not_ write TAOCP just to receive millions in royalties from Addison
Wesley.

The value of producing a really good technical book comes more from
the "fame" than from the "fortune." Writers of such works generally
get paid for doing something else, such as being a professor.

Having a famous book very likely makes it easier to get larger
research grants, and better grad students. Neither of those are the
same thing as royalties.

This is a longwinded way of suggesting that it would be a bit surprising
if Graham was _solely_ motivated by personal greed. I'm sure he wouldn't
turn away someone offering him wheelbarrows full of money, but as VC has
gotten tight again, I expect that there are few wheelbarrows out there.

>>It migth be that he's very busy and plans to republish the book when
>>he gets the chance.

> Good reason to post these messages, dont you think ?

Not necessarily.

>>But it's his book, and his right to do with it as he wishes. And
>>meanwhile, there are others with books that need buying to support
>>other authors.

I'm not clear on which ones are actually still in print. Norvig's
book probably is, but there aren't many others.

>>You may, by the way, think that a publisher is just a nameless entity
>>that is profiteering off of our community. But I *want* publishers to
>>make as much money off of our community's books as they can

> Hmm.... Brain Research ( published by Springer Verlag ) is
> currently 17,000 $ for a one year subscription. Guess which journal
> our library will not be subscribing to this year....

Probably so. I can't _imagine_ what they'd have in there that would
justify a $17K subscription price.

On the other hand, if you're running a neurological research lab,
there might well be something found there that can't be found anywhere
else that would justify the price. It certainly doesn't sound like a
journal for the layperson...


--
(concatenate 'string "cbbrowne" "@ntlug.org")
http://vip.hyperusa.com/~cbbrowne/resume.html

Rules of the Evil Overlord #57. "Before employing any captured
artifacts or machinery, I will carefully read the owner's manual."
<http://www.eviloverlord.com/>

Janis Dzerins

unread,
May 15, 2001, 12:03:25 PM5/15/01
to
raj <isra...@optushome.com.au> writes:

> On 15 May 2001 17:01:05 +0300, Janis Dzerins <jo...@latnet.lv> wrote:
>
> >> There was a post from a person who offered to buy the tex or
> >> postscript file from PG but recieved no reply.
> >
> >And do you also know why it was a *post* instead of a private mail?
>
> When I last checked, telepathy was not listed on my cv.

So how do you know that the person did not receive any reply?

> >> >It might be, indeed, that he just doesn't care about the revenue from
> >> >the book any more
> >> That is likely.
> >> After all, he did sell his company for 40 million $ to Yahoo....
>
> >Yeah. Looks like you like counting someone else's money.
>
> No, I am providing objective data that corroborates a statement made
> by another person.

Your objective data is invalid.

cbbr...@hex.net

unread,
May 15, 2001, 12:16:27 PM5/15/01
to
cbbr...@hex.net wrote, without proofing well enough...

> Most of the people that produce the really _great_ technical books
> wrote them in order to attain riches. I'm quite sure Donald Knuth
> did _not_ write TAOCP just to receive millions in royalties from
> Addison Wesley.

Oops. That should read...

Most of the people that produce the really _great_ technical books

_DID NOT_ write them in order to attain riches....

Erik Naggum

unread,
May 15, 2001, 12:17:24 PM5/15/01
to
* Thaddeus L Olczyk

> Should this continue, then employers who get wind may be hesitant to use
> Lisp on projects for fear that new developers may not be able to get
> materials needed to learn Lisp.

This is a veiled threat, not a plea. It is patently false that people
who wish to learn Lisp are unable to get teaching material if Paul Graham
does not provide his books to those who want to learn. Obviously, Paul
Graham learned Lisp enough to write those books before they existed.
Many other Lisp programmers have learned Lisp without the aid of his
books. Paul Graham's books are _not_ the sine qua non they are touted to
be. My opinion is that his books "ANSI Common Lisp" is of very limited
value to real programmers, perhaps even a disservice. I doubt its
tutorial value, too, as it does not in any way go into the "advanced"
topics of exception handling and making an application failure resitant,
which is hard work in all languages, but that, too, it easier in Common
Lisp and better thought out.

What happens to the people who "learn" Common Lisp? Do they leave the
language after a while? Do they ever build real applications with it?
do they ever have to deal with the traumatic real world in Common Lisp,
or do they only deal with simple stuff in a protected environment?

Common Lisp (environments) offer incredibly powerful means of dealing
with unexpected situations, including jumping into the debugger,
exception handling par excellence, dynamic updating of code and classes.
Not all people appreciate this. Some people appreciate the availablity
of non-trivial algorithms and data types, and would enjoy the vast array
of pre-written code in languages such as C++, Java, and Perl. Common
Lisp is a way of thinking, not "just a tool", which is how many see any
programming language, preferring to think in some way they may believe is
unrelated to their specific language. Paul Graham's books did not offer
much, if anything, in this vein. While On Lisp was clever, it offered
only one man's view and ended there. Did anyone write any clever code on
their own after reading that book, which they proceeded to share with
others (in any way: for-profit, non-profit, give-away)? Or did they only
read it?

The uncomfortable question is: Did you _learn_ anything from his books?
If so, why can you not write it down on your web pages and talk about it
in the newsgroup instead of clamoring for copies of the book you learned
from as if the knowledge and understanding you have gained is unable to
reproduce itself?

An uncomfortable answer is that the Common Lisp community is hostile to
creativity. People argue that Lisp is dead, but it is the Lispers who
are dead. With a few exceptions, people who use Lisp have given up, and
they only require, they do not provide. Many Lisp programmers demand
that sockets and multiprocessing should be _standardized_ before they
want to use it, which penalizes creativity like nothing else. Many Lisp
programmers think it sucks to interface with other (inferior) languages,
some in general, some because it isn't standardized, some because they
fail to understand how software is organized and want a perfect world.

Who among the avid readers of Paul Graham's books are prepared to exceed
their teacher? I would claim that a teacher who does not produce at
least one student who excel way beyond the teacher's level is a failure.
This is why it is so hard to write good textbooks in a language that is
_already_ the result of many students excelling beyond their teachers and
why it is so easy to write good textbooks in a language that beyond which
almost anyone can go, such as Scheme. The Lisp world does not need more
Scheme texts, even if they cover Common Lisp. It needs more Common Lisp
texts that show how Common Lisp is _still_ way ahead of the pack, that it
rises tall like a sequoia in an underbrush of weeds competing for the
attention of people who fail to look up when they bump into the huge tree
and instead walk around it, not believing those who told them had just
missed something. Like the sequoia, Common Lisp survives the brush fires
and has built-in means of coming out on top. _That_ is what should be
taught in Lisp texts, not "how to disguise a sequoia among the weeds".

#:Erik
--
Travel is a meat thing.

Thomas F. Burdick

unread,
May 15, 2001, 4:45:05 PM5/15/01
to
Thaddeus L Olczyk <olc...@interaccess.com> writes:

> Paul,


> I am writing this to make a request of you. If you find that
> there is no way that your books will be in print once again, of if
> the likelyhood is that they will not, then please make some
> viewable/readable form of these books available on the web.

Kent M Pitman <pit...@world.std.com> writes:

> What we do know is that he has an item of value and that people are
> rallying to say he should put it up for free. Again, let me repeat:
> Fine for an individual to say in private mail. Bad to do in public.


It seems to me that the request was for him to make the book(s) freely
available *iff* Graham doesn't think he will be making any more money
off of them. I certainly think that making this request in a public
forum is amazingly tacky, but I thought the first clause of the second
sentance of the letter made the request reasonable: a negative
response (or a lack of response) would in this context indicate that
he probably thinks the books are still of value.

Hartmann Schaffer

unread,
May 15, 2001, 5:51:36 PM5/15/01
to
In article <sfw7kziix...@world.std.com>, Kent M Pitman wrote:
>[Rant alert.]
>
>Maybe it's just me, but I find this a remarkably irritating thread.
>
>Certainly it's a possible thing for someone to give away intellectual
>property, but it feels to me like the whole discussion presupposes that
>his only rational or polite or reasonable course of action is to make
>the book more available. I don't see that.
>
>The apparent thirst on this newsgroup for pursuing a "gimme free stuff"
>seriously irks me. It's one thing to appreciate free stuff that comes
>out (whether it's implementations, libraries, documentation, or text books).
>It's quite another to start demanding that people turn profit-making
>ventures into non-profit-making ones.

frankly, i don't see your point. at least the first poster was willing to
pay. the problem is that this book is in pretty high demand, and for what-
ever reason the publisher is not willing to satisfy this demand. mr. graham
certainly doesn't profit from somebody offering $200 for a used copy, or
people putting their copies up for auction. at least one of the posters
in this thread asked for the tex files and offered to pay.

> ...


>You may, by the way, think that a publisher is just a nameless entity
>that is profiteering off of our community. But I *want* publishers to
>make as much money off of our community's books as they can because it
>means they are likely to think of books on Lisp as profit-making
>ventures rather than charity, and it makes them more likely to publish
>more in the future rather than just to assume that all profit-making on
>Lisp was to be done in the past.

this ng has been full of requests for sources for this book for quite some
time now. so it is apparent that there is an unsatisfied demand.

<rant>i was brought up in the belief that businesses (like publishers)
make there money by providing services that customers want in a way that
satisfies them. it seems that this has turned into them providing
these services only when it makes them lots of money. if the two graham
books don't make enough money for prentice hall that its worth for them to
run a second printing, i'm sure there is a smaller publisher that would be
willing to do it. there are several university presses who publish books
that have less sales prospects than pg's lisp books. isn't there a way for
ph to let them handle it?
</rant>

--

hs

----------------------------------------------------------------

"The cheapest pride is national pride. I demonstrates the lack of
characteristics and achievements you can be proud of. The worst loser
can have national pride" - Schopenhauer

Hartmann Schaffer

unread,
May 15, 2001, 5:54:37 PM5/15/01
to
In article <s9f2gt4jok1a5q2jb...@4ax.com>, raj wrote:
>On 15 May 2001 17:01:05 +0300, Janis Dzerins <jo...@latnet.lv> wrote:
>
>>> There was a post from a person who offered to buy the tex or
>>> postscript file from PG but recieved no reply.
>>
>>And do you also know why it was a *post* instead of a private mail?
>
>When I last checked, telepathy was not listed on my cv.

iirc, the poster mentioned that he emailed paul graham with this offer/
request and didn't receive a reply. he didn't post the offer

> ...

Hartmann Schaffer

unread,
May 15, 2001, 6:02:50 PM5/15/01
to
In article <sfw1ypq...@world.std.com>, Kent M Pitman wrote:
> ...

>> Good reason to post these messages, dont you think ?
>
>No. Absolutely not. This is like proposing to someone on TV. It may be
>very romantic if the person wants to say "yes" but you'd better be darned
>sure that's what they plan to say before you do it. Otherwise, it is a huge
>public embarrassment that you have no right to turn on them because everyone
>gets to watch the person being asked the question give a disappointing answer
>and that person feels like a jerk.

i took the post that started the trend more as an indication that there is
a pretty high unsatisfied demand for the book, and that people turn to
desparate measures to get their hands on a copy. the way he expressed it
certainly did *not* sound like he requested a freebie

Steven L. Collins

unread,
May 15, 2001, 6:05:25 PM5/15/01
to

"Erik Naggum" <er...@naggum.net> wrote in message
news:31989322...@naggum.net...


> * Thaddeus L Olczyk
> > Should this continue, then employers who get wind may be hesitant to use
> > Lisp on projects for fear that new developers may not be able to get
> > materials needed to learn Lisp.
>
> This is a veiled threat, not a plea. It is patently false that people
> who wish to learn Lisp are unable to get teaching material if Paul
Graham
> does not provide his books to those who want to learn. Obviously, Paul
> Graham learned Lisp enough to write those books before they existed.

I'll bet he was using "Lisp" by Winston and Horn. I think the 3rd edition
is an OK reference and it's still in print. But there is the strange
reference to Gold Hill CL. Is Gold Hill still selling Golden Common Lisp?

------------- Snip ----------

> The uncomfortable question is: Did you _learn_ anything from his books?
> If so, why can you not write it down on your web pages and talk about it
> in the newsgroup instead of clamoring for copies of the book you learned
> from as if the knowledge and understanding you have gained is unable to
> reproduce itself?
>
> An uncomfortable answer is that the Common Lisp community is hostile to
> creativity. People argue that Lisp is dead, but it is the Lispers who
> are dead. With a few exceptions, people who use Lisp have given up, and
> they only require, they do not provide. Many Lisp programmers demand
> that sockets and multiprocessing should be _standardized_ before they
> want to use it, which penalizes creativity like nothing else. Many Lisp
> programmers think it sucks to interface with other (inferior) languages,
> some in general, some because it isn't standardized, some because they
> fail to understand how software is organized and want a perfect world.

I'm trying to become a *LISP Programmer* because I think I'm starting to see
the forest, not just a bunch of trees.

----------Snip-----------


> This is why it is so hard to write good textbooks in a language that is
> _already_ the result of many students excelling beyond their teachers
and
> why it is so easy to write good textbooks in a language that beyond
which
> almost anyone can go, such as Scheme. The Lisp world does not need more
> Scheme texts, even if they cover Common Lisp. It needs more Common Lisp
> texts that show how Common Lisp is _still_ way ahead of the pack, that
it
> rises tall like a sequoia in an underbrush of weeds competing for the
> attention of people who fail to look up when they bump into the huge
tree
> and instead walk around it, not believing those who told them had just
> missed something.

One thing that has been puzzling me over the last year is why LISP is not
more popular? It seems to be significantly more powerful then C/C++. I
would have to say that the demo version of "Allegro CL" I tried, was the
"Most Advanced Development Environment" I have ever seen or tried. I'm
currently saving my $ to buy a copy. It makes Visual C++ look like a toy.
Why is Scheme and C++ preferred over Lisp at the CS-101 level. Is it just
marketing skill? The lack of it at companies like Franz and Xanalys. Or is
it more a fad like Disco Music :-)

I do wish I could get my hands on more Lisp literature. But as you seem to
indicate just write more programs and use it more.

Steven


Joseph Dale

unread,
May 15, 2001, 6:27:13 PM5/15/01
to
"Steven L. Collins" wrote:
>
> "Erik Naggum" <er...@naggum.net> wrote in message
> news:31989322...@naggum.net...
>
> > * Thaddeus L Olczyk
> > > Should this continue, then employers who get wind may be hesitant to use
> > > Lisp on projects for fear that new developers may not be able to get
> > > materials needed to learn Lisp.
> >
> > This is a veiled threat, not a plea. It is patently false that people
> > who wish to learn Lisp are unable to get teaching material if Paul
> Graham
> > does not provide his books to those who want to learn. Obviously, Paul
> > Graham learned Lisp enough to write those books before they existed.
>
> I'll bet he was using "Lisp" by Winston and Horn. I think the 3rd edition
> is an OK reference and it's still in print. But there is the strange
> reference to Gold Hill CL. Is Gold Hill still selling Golden Common Lisp?
>

It appears that they are: http://www.goldhill-inc.com/ has some
offerings. Interestingly, I think there's more to the relationship
between "Lisp" and Gold Hill than that reference. I recently found a
used copy (c. 1991 - it's of purely historical value I guess, but hey,
it only cost 50 cents) of the student version of Golden Common Lisp. The
package has the same art as the cover of "Lisp", and there's some sort
of online tutorial included based on the text of "Lisp".

Joe

Kent M Pitman

unread,
May 15, 2001, 6:35:23 PM5/15/01
to

I've been making a comment about politeness, not about the abstract
concept of wanting this particular hypothetical situation.

It can BOTH be reasonable to wish that a person of means offer
contributions to your cause AND rude to the point of counterproductive
to stand up in public and request it. Such, I think, is the case here.

You could say that every charity that calls my house has a point. "IF
you could spare the money," they always begin. But the more that
call, the less I want to give, to the point that I have adopted a
policy that I don't give to organizations nor buy from companies that
telemarket me. This is not a statement about the goodness of their
cause or product. This is a statement about their respect for me
personally.

I get "reasonable" requests like this all the time for my writings.
(Usually my creative writings. I don't think people here on this
newsgroup complain that I post too little.) It's flattering at one
level to get fan mail--nice to know that people care that I write
more. I treat it as a valuable commodity and try to take it VERY
seriously. But it also creates a source of enormous stress because
often I am failing to write NOT because I didn't think of it, but
because I am oversubscribed. I am probably already carrying enormous
guilt for not getting to everything people wish I'd do, and I am often
staying up late and workign very hard trying to do everything that the
world expects of me. In that context, coming up to me and saying "why
don't you spend more time writing" is an EQ statement to "why don't
you spend less time sleeping than you already do"? To me, there's a
sea of difference between "we really enjoy your stories and look
forward to your next one" and "i'm really pissed that you haven't made
stuff available to me recently". And, perhaps because I'm projecting,
the message to Paul above strikes me as being of the latter kind. The
letter superficially suggests that it's a mere oversight on his part
that this situation has happened, whereas to me it seems to me like
the sender can't be polite about not getting a personal reply and is
now escalating the situation to retaliate against him for not replying
by threatening to have others pester him, too. Maybe it's just me,
but it seems highly insensitive.

Btw, I don't know Paul very well, having only spoken to him a handful
of times, but my impression is that if he had more time, he might tell
you that what stands between you yourself and making millions is not
the purchase of his or anyone's books but just plain getting out there
and finding any of the myriad business opportunities that are sitting
there waiting for someone to take them.

And if you think all that stands between you and succeeding on a juicy
business topic is that one book, then find a way to borrow, rent, or buy
the book from someone else. If you think this problem is insurmountable,
you need a book on problem solving, not on programming.

cbbr...@hex.net

unread,
May 15, 2001, 7:59:58 PM5/15/01
to
h...@paradise.nirvananet (Hartmann Schaffer) writes:
>In article <sfw7kziix...@world.std.com>, Kent M Pitman wrote:

>>You may, by the way, think that a publisher is just a nameless
>>entity that is profiteering off of our community. But I *want*
>>publishers to make as much money off of our community's books as
>>they can because it means they are likely to think of books on Lisp
>>as profit-making ventures rather than charity, and it makes them
>>more likely to publish more in the future rather than just to assume
>>that all profit-making on Lisp was to be done in the past.

I've had some dealings with publishers; it is not at all obvious to me
that it is necessarily particularly good for any sector to be
particularly dependent on how profitable publishers are. The _main_
beneficiary of a profitable publisher is the owner of the publisher,
with authors being an _exceedingly_ distant second.

I don't think it's quite as bad as the recording industry, where
artists make a _little_ money so that the guys in the recording
industry can make a _lot_ of money, but there certainly was no
question of Graham finding that _On Lisp_ would be a runaway
bestseller that he'd make $40M on.

> this ng has been full of requests for sources for this book for
> quite some time now. so it is apparent that there is an unsatisfied
> demand.

Fair to say...

> <rant>i was brought up in the belief that businesses (like
> publishers) make there money by providing services that customers
> want in a way that satisfies them. it seems that this has turned
> into them providing these services only when it makes them lots of
> money. if the two graham books don't make enough money for prentice
> hall that its worth for them to run a second printing, i'm sure
> there is a smaller publisher that would be willing to do it. there
> are several university presses who publish books that have less
> sales prospects than pg's lisp books. isn't there a way for ph to
> let them handle it? </rant>

You may be missing one of the bits of "remuneration": part of the
"benefit" of being published is in having your book associated with a
prestigious publisher.

- Getting published by SAMS is hardly a sign of being a great author;
- Unix folk tend to respect books published by O'Reilly;
- Getting published by Addison Wesley or Prentice Hall _does_
qualify...

And getting published by "No Name Press" might well do reputational
injury.
--
(concatenate 'string "aa454" "@freenet.carleton.ca")
http://www.ntlug.org/~cbbrowne/resume.html
Why are people born? Why do they die? Why do they spend so much of the
intervening time wearing digital watches?

Larry Elmore

unread,
May 15, 2001, 8:01:45 PM5/15/01
to
Erik Naggum wrote:
>
> * Thaddeus L Olczyk
> > Should this continue, then employers who get wind may be hesitant to use
> > Lisp on projects for fear that new developers may not be able to get
> > materials needed to learn Lisp.
>
> This is a veiled threat, not a plea.

It's not even remotely a "threat." It's merely a warning, and there's a
big difference between the two. As it is, I think the warning _is_
faintly ridiculous.

> It is patently false that people
> who wish to learn Lisp are unable to get teaching material if Paul Graham
> does not provide his books to those who want to learn. Obviously, Paul
> Graham learned Lisp enough to write those books before they existed.
> Many other Lisp programmers have learned Lisp without the aid of his
> books.

True, but it is equally obviously that many people have found them
valuable. I haven't read "On Lisp" so I can't comment on it, but I found
"ANSI Common Lisp" to be a good introduction to Lisp. There are
certainly _worse_ books out there. What would you recommend, Erik?

Larry

raj

unread,
May 15, 2001, 8:15:16 PM5/15/01
to
>I'll bet he was using "Lisp" by Winston and Horn. I think the 3rd edition
>is an OK reference and it's still in print. But there is the strange
>reference to Gold Hill CL. Is Gold Hill still selling Golden Common Lisp?

It exists.
It is just very poorly marketed.
ie: almost no web presence, no participation by staff in the lisp
newsgroups, no free limited demo. In addition , at 2000$ + it is a bit
pricy.

See:
http://www.goldhill-inc.com/developer.html

Hartmann Schaffer

unread,
May 15, 2001, 11:21:40 PM5/15/01
to
In article <2qjM6.11524$iC1.3...@news6.giganews.com>, cbbr...@hex.net wrote:
> ...
>> <rant>i was brought up in the belief that businesses (like
>> publishers) make there money by providing services that customers
>> want in a way that satisfies them. it seems that this has turned
>> into them providing these services only when it makes them lots of
>> money. if the two graham books don't make enough money for prentice
>> hall that its worth for them to run a second printing, i'm sure
>> there is a smaller publisher that would be willing to do it. there
>> are several university presses who publish books that have less
>> sales prospects than pg's lisp books. isn't there a way for ph to
>> let them handle it? </rant>
>
>You may be missing one of the bits of "remuneration": part of the
>"benefit" of being published is in having your book associated with a
>prestigious publisher.
>
>- Getting published by SAMS is hardly a sign of being a great author;
>- Unix folk tend to respect books published by O'Reilly;
>- Getting published by Addison Wesley or Prentice Hall _does_
> qualify...
>
>And getting published by "No Name Press" might well do reputational
>injury.

i wouldn't call mit press or university of cambridge press "no name press".
both of them have published books about advanced languages

cbbr...@hex.net

unread,
May 16, 2001, 12:33:41 AM5/16/01
to
Larry Elmore <ljel...@home.com> writes:
> Erik Naggum wrote:
> > * Thaddeus L Olczyk
>>> Should this continue, then employers who get wind may be hesitant
>>> to use Lisp on projects for fear that new developers may not be
>>> able to get materials needed to learn Lisp.

>> This is a veiled threat, not a plea.

> It's not even remotely a "threat." It's merely a warning, and
> there's a big difference between the two. As it is, I think the
> warning _is_ faintly ridiculous.

I'm not sure "warning" is even quite right.

The word "hesitant" seems pretty appropriate.

If there's not an active deployment of literature about a language, it
seems not unreasonable to think that interest in that language may be
waning, which will discourage its use.

>>It is patently false that people who wish to learn Lisp are unable
>>to get teaching material if Paul Graham does not provide his books
>>to those who want to learn. Obviously, Paul Graham learned Lisp
>>enough to write those books before they existed. Many other Lisp
>>programmers have learned Lisp without the aid of his books.

> True, but it is equally obviously that many people have found them
> valuable. I haven't read "On Lisp" so I can't comment on it, but I
> found "ANSI Common Lisp" to be a good introduction to Lisp. There
> are certainly _worse_ books out there. What would you recommend,
> Erik?

The main text that is readily available these days seems to be
Norvig's "PAIP," which, it seems to me, is somewhat _better_ than
either of Graham's books.

I would suggest the thought that it would _not_ be an utterly horrible
thing that Graham's first two books are getting decreasingly available
if there were something new in the wings.

I'm sure it would be instructive if Graham wrote a _new_ book
describing the sorts of (language-oriented) techniques used to make
the Yahoo! Store work. A book presenting ways of building Lisp-based
web applications could provide all sorts of opportunities to talk
about interesting and overall instructive techniques. Probably would
be more practical than Yet Another Piece on anaphoric macros.
--
(reverse (concatenate 'string "ac.notelrac.teneerf@" "454aa"))
http://vip.hex.net/~cbbrowne/lisp.html
Rules of the Evil Overlord #73. "I will not agree to let the heroes go
free if they win a rigged contest, even though my advisors assure me
it is impossible for them to win." <http://www.eviloverlord.com/>

George Smith

unread,
May 16, 2001, 4:26:38 AM5/16/01
to
I would suggest that everyone who wants On Lisp but doesn't have it
consider sending a letter to the publisher asking when it will be
reprinted, thus signalizing a demand directly to the publisher. In the
meantime, lots of libraries have it. If the local library doesn't, use
interlibrary loan services. The code from the book is on the web now,
and should continue to be understandable once the book has been read
and returned to the library. If need be, borrow the book from the
library again.

As far as ANSI Common Lisp goes, it's still in print. If the English
version goes out of print, learn German and buy the translation ;-)

George

Tim Bradshaw

unread,
May 16, 2001, 7:16:41 AM5/16/01
to
h...@paradise.nirvananet (Hartmann Schaffer) writes:

> i took the post that started the trend more as an indication that there is
> a pretty high unsatisfied demand for the book, and that people turn to
> desparate measures to get their hands on a copy. the way he expressed it
> certainly did *not* sound like he requested a freebie
>

Has anyone actually tried ringing PH and asking them what the
prospects for a reprint are? That would seem orders of magnitude
better than oosting articles in newsgroups which PH editors are
unlikely to read.

--tim


Tim Bradshaw

unread,
May 16, 2001, 7:23:35 AM5/16/01
to

I'm just following up to this so the text above appears in more
articles. Just do it, don't wait for some book.

--tim

Paolo Amoroso

unread,
May 16, 2001, 12:38:02 PM5/16/01
to
On Mon, 14 May 2001 21:40:17 GMT, olc...@interaccess.com (Thaddeus L
Olczyk) wrote:

> I am writing this to make a request of you. If you find that
> there is no way that your books will be in print once again,
> of if the likelyhood is that they will not, then please make some
> viewable/readable form of these books available on the web.

See question "Where can I get a copy of On Lisp?" in Graham's FAQ:

http://www.paulgraham.com/faq.html


Paolo
--
EncyCMUCLopedia * Extensive collection of CMU Common Lisp documentation
http://cvs2.cons.org:8000/cmucl/doc/EncyCMUCLopedia/

Bob Bane

unread,
May 16, 2001, 1:02:49 PM5/16/01
to

--
Remove obvious stuff to e-mail me.
Bob Bane

Tim Bradshaw wrote:
>
> Has anyone actually tried ringing PH and asking them what the
> prospects for a reprint are? That would seem orders of magnitude
> better than oosting articles in newsgroups which PH editors are
> unlikely to read.
>
No, but I did take a look at http://www.paulgraham.com/faq.html:

Where can I get a copy of On Lisp?

Unfortunately it is out of print. I've heard there are some copies left
at
amazon.co.uk, but they are not likely to last long. If you like I can
put you
on this page, which has led to some people getting copies. Copies also
sometimes come up for sale at eBay.

I am in the process of getting the rights back from the publishers.
Then
I'll either set up some kind of print on demand arrangement, or just
put
it online.

Also, see http://www.paulgraham.com/wantonlisp.html

Graham is not unaware of the problem.

Bijan Parsia

unread,
May 16, 2001, 6:35:51 PM5/16/01
to
On 16 May 2001, Tim Bradshaw wrote:

> Kent M Pitman <pit...@world.std.com> writes:

[snip]


> > And if you think all that stands between you and succeeding on a juicy
> > business topic is that one book, then find a way to borrow, rent, or buy
> > the book from someone else. If you think this problem is insurmountable,
> > you need a book on problem solving, not on programming.
>
> I'm just following up to this so the text above appears in more
> articles. Just do it, don't wait for some book.

Continuing this action, but adding a point.

I like *On Lisp* as a read. In general, I enjoy nice written, interesting,
thoughtful technical literature, and, for that reason, it be nice if *On
Lisp* were more readily available.

I'd almost rather that it *wasn't* made downloadable, *if* this lead to
continued lack of a printed version.

And I agree that it's not the *sine qua non*. And I don't think I'd pay
$200 for a copy. However, I think it's really worth having in print.

Weird note: I was praising it's discussion of closures off handedly to a
Perl guy (who had mentioned *Object Oriented Perl*'s discussion), and
1) he said he couldn't find it, never seen it, wasn't availible so 2) Lisp
was dead, 3) lisp authors were all academic wankers who used confusing
language, 4) thus (common) lisp was only used in academia etc., etc.,
etc. (note, some of the "thus"s ran several ways, depending on the stage
of the conversation).

However, my reaction wasn't "Oh my god, the Lisp community must generate
books to expand mindshare," but "Oh boy, what an idiot."

Hmm. While we're talking book wishes, extracting the Lisp advice bits of
Norvig's PAIP (which is a fine fine book overall) seems like a feasible
and worthwhile project, if just so I could recommend it to folks without
having them give me a hard time with the "AI" word :)

Cheers,
Bijan Parsia.

Marc Spitzer

unread,
May 16, 2001, 11:35:36 PM5/16/01
to

I did call PH when I was looking for on lisp, right around when it
started to be seriusly hard to find. They told me that the plates
were distroyed and they had no plans for a second edition. I did
finaly get a copy thanks to Mr Graham's wantonlisp.html page and I
would like to thank him publicly for providing the service. Remember
lisp is a small community and a small goup of loud vocal people does
not buy many books. The first production run lasted for over 10 years
and this is not good from the publishers point of view when he has
other books that sell out in 1-2 years, quite probably with larger
print runs. The fact that they are useless in 3 years max from the
inital print run is a good thing, he gets to sell more books. I have
heard some rumors about book on demand publishing becoming practical.
What would be cool for lisp would be a publisher, like Dover press,
that would find a profitable bussness by buying the rites to books
that will otherwise never again see the light of day and set up a web
site where you could order these books and get them printed as needed.

marc

F. Xavier Noria

unread,
May 17, 2001, 2:53:36 AM5/17/01
to
On Wed, 16 May 2001 18:35:51 -0400, Bijan Parsia <bpa...@email.unc.edu> wrote:

: Weird note: I was praising it's discussion of closures off handedly to a


: Perl guy (who had mentioned *Object Oriented Perl*'s discussion), and
: 1) he said he couldn't find it, never seen it, wasn't availible so 2) Lisp
: was dead, 3) lisp authors were all academic wankers who used confusing
: language, 4) thus (common) lisp was only used in academia etc., etc.,
: etc. (note, some of the "thus"s ran several ways, depending on the stage
: of the conversation).

I asked in comp.lang.perl.misc whether anyone had considered to use
closures to store session state in web applications as Paul Graham
explains in the continuation of "Beating the Averages" [*].

I found respect there, the discussion wasn't too much deep but the
idea sounded elegant and people contributed to the thread. The lack
of macros in Perl could make that approach impractical and it wasn't
clear how one could have a hash with the closures in memory if
requests could be directed to more than one process in the web server,
which seems to be the only reasonable scenario (this is something to
solve in the Lisp application as well).

-- fxn

[*] http://www.paulgraham.com/lwba.html

Robert Lehr

unread,
Jun 4, 2001, 5:17:40 AM6/4/01
to
On Tue, 15 May 2001 12:44:58 GMT, Kent M Pitman <pit...@world.std.com> wrote:
>[Rant alert.]
>
>Maybe it's just me, but I find this a remarkably irritating thread.
>
>Certainly it's a possible thing for someone to give away intellectual
>property, but it feels to me like the whole discussion presupposes that
>his only rational or polite or reasonable course of action is to make
>the book more available. I don't see that.
>
> .
> .
> .
>
> .

Gee golly-willakers!

I was taught that it can't hurt to ask. Is it possible that this is
an instance where it _can_ hurt to ask?

I think that I should sue my parents for misdirection.

Bozzio

Erik Naggum

unread,
Jun 4, 2001, 9:36:33 AM6/4/01
to
* Robert Lehr

> I was taught that it can't hurt to ask. Is it possible that this is
> an instance where it _can_ hurt to ask?

Have you stopped beating your wife?

> I think that I should sue my parents for misdirection.

Every question contains a set of assumptions that an answer may confirm,
deny, or simply fail to question, in which case the answer may turn bad.
Most people consider only the surface assumption, without even thinking
about the underlying assumptions or even the purpose of asking. This is
actually reflected in their programming. If you are generally unaware of
your assumptions in daily life, chances are you will bring that lack of
training in mental skills into your programming. This is the reason I
expect programmers to be more aware of their assumptions than most people
and consequently more to blame for their assumptions, which I expect to
be more conscious than for the general population. (I realize that this
puts the programmers I talk about into the "well-educated" segment of the
population and that this is increasingly a faulty assumption, progressing
towards counter-productive.)

Suppose you are about to write a function that produces an identification
string that contains a sequence number. You believe that format is too
expensive and decide to print to a string stream. Where you would have
requested decimal with ~D in format, you just use write. This works most
of the time, until someone decides to bind *print-base* to 8, say, for
some unrelated use, and your function prints the sequence number in the
wrong base. This may be disastrous. Suppose you remember the base and
use (write x :base 10), instead. This works for a long time, then stops
working because you were unaware of the variable *print-radix* and failed
to use (write x :base 10 :radix nil). Now, it is generally wrong to use
a base and a radix marker different from what the user of the value has
requested, but there are several users of the print engine, so there are
several ways to deal with this and the Lisp way of binding global control
variables must be understood and its assumptions made explicit to make
this work _all_ the time. (I use write in this example because it lists
all the printer control variables as keyword arguments, very much unlike
the knowledge you otherwise have to have about printer control variables.)
The exact same problem occurs when programmers who have active disdain
for the internal upper-case symbol names forget to bind *print-case* or
specify :case or ascertain that readtable-case has the expected value,
because in their Common Lisp images, these all have their favorite values.

Most software bugs are related to unchecked assumptions, especially the
kind of assumption that restrict the set of possible answers to questions
that have far more possible answers. These are the questions programmers
fail to ask, or the result of asking the wrong questions, which as I hope
I have demonstrated _can_ hurt you. (And that this issue is not a joke,
unfortunately. Software quality is directly related to willingness and
ability of its programmers to ask the _right_ questions, which is a much
more valuable skill than to answer the wrong questions correctly, which
is what, e.g., Perl and HTML is all about.)

I think your parents should sue you for believing everything they said,
if anyone is to be sued over this, because they taught you that it cannot
hurt to question their advice, but you failed to do that and still depend
on them to tell you what is right. Growing up means finding out why what
your parents told you was right for them and their time, figuring out if
it is right for you and your time, and if not, what else might be right.
For instance, it worked well to repeat one's parents' advice when the
world changed very little from generation to generation, but that it has
worked in the past is precisely the reason it will not continue to work.

On the other hand, if you really had parents who were able to answer any
insane question rationally so that it did in fact never hurt to ask, it
is very important to learn how to answer questions so that it does cannot
hurt to ask... Actually, that might be a very, very valuable skill.

Lieven Marchand

unread,
Jun 4, 2001, 12:18:28 PM6/4/01
to
Erik Naggum <er...@naggum.net> writes:

> Software quality is directly related to willingness and ability of
> its programmers to ask the _right_ questions, which is a much more
> valuable skill than to answer the wrong questions correctly, which
> is what, e.g., Perl and HTML is all about.

Most Perl scripts aren't very good in answering any questions
correctly in my experience. Given some filenames with spaces or colons
in them or anything else out of the ordinary in their input and they
will merrily regexp themselves to oblivion.

And there's nothing terribly wrong with HTML as such. As soon as it
got into the hands of idiots that couldn't get separation of structure
and layout in their heads it was lost off course. Add to that that the
major browsers in stead of enforcing the standard pedanticly bowed
backwards to tolerate junk that wasn't well formed and you get the
current disaster.

--
Lieven Marchand <m...@wyrd.be>
Making laws appears to win votes. Enforcing them doesn't.
See Rule One. Roger Burton West in the monastery.

Vladimir V. Zolotych

unread,
Jun 5, 2001, 2:28:54 AM6/5/01
to
Robert Lehr wrote:
>
> I was taught that it can't hurt to ask. Is it possible that this is
> an instance where it _can_ hurt to ask?

Frequently a question is just a gate to something
that is hurt. Questioner just opens the gate for it.
He doesn't know who comes. Even when he sees the question
was "bad" he can't say why.

--
Vladimir Zolotych gsm...@eurocom.od.ua

Biep @ http://www.biep.org/

unread,
Jun 6, 2001, 7:03:53 AM6/6/01
to
<cbbr...@hex.net> wrote in message
news:FqnM6.11746$iC1.4...@news6.giganews.com...

> The main text that is readily available these days
> seems to be Norvig's "PAIP," which, it seems to me,
> is somewhat _better_ than either of Graham's books.

While PAIP is a great book, and can be used as an introduction to Common
Lisp, it wasn't meant as such, and in fact the code in the book is
inetntionally fairly basic, with a few exceptions, such as the stuff on
macros (which, by the way, is mainly complex because writing a serious
macro in CL involves a lot of "fighting the system").

Someone who has worked his or her way through PAIP will have a decent
knowledge of basic AI approaches, but still needs to learn a lot both about
Common Lisp itself and about Lisp programming techniques that have not or
barely been touched on.

On the other hand: someone who enjoyed working through PAIP is almost
certainly someone who is well-equipped to learn these things.

I don't know Graham's books, so I cannot compare them.

--
Biep
Reply via http://www.biep.org


Pierre R. Mai

unread,
Jun 6, 2001, 7:49:28 AM6/6/01
to

> While PAIP is a great book, and can be used as an introduction to Common
> Lisp, it wasn't meant as such, and in fact the code in the book is
> inetntionally fairly basic, with a few exceptions, such as the stuff on
> macros (which, by the way, is mainly complex because writing a serious
> macro in CL involves a lot of "fighting the system").

That remark made me interested: In what way do you feel that writing
(serious) macros in CL involves 'a lot of "fighting the system"'?
This seems to imply that CL is actively "resisting" your writing of
the macro in some form, which would imply that CL is in some ways
unsuited to writing list-transformation programs. Could you
elaborate?

Regs, Pierre.

--
Pierre R. Mai <pm...@acm.org> http://www.pmsf.de/pmai/
The most likely way for the world to be destroyed, most experts agree,
is by accident. That's where we come in; we're computer professionals.
We cause accidents. -- Nathaniel Borenstein

Erik Naggum

unread,
Jun 6, 2001, 10:40:47 PM6/6/01
to
* "Biep @ http://www.biep.org/" <repl...@my-web-site.com>

> While PAIP is a great book, and can be used as an introduction to Common
> Lisp, it wasn't meant as such, and in fact the code in the book is
> inetntionally fairly basic, with a few exceptions, such as the stuff on
> macros (which, by the way, is mainly complex because writing a serious
> macro in CL involves a lot of "fighting the system").

Thsoe who do not know or do not like the rules are always fighting the
system regardless of what "the system" is, while those who know and like
the system cannot generally fathom what it is that people _want_ to fight.

The same goes with laws and regulations, codes of conduct, cultures, etc.
Programming languages are social constructs. Some people enjoy rebelling
more than they enjoy living in a society. Some are able to appreciate
the societies they live in higher than what rebelling against it and its
people would entail, regardless of whether they think everybody would
appreciate whatever is on the other side of rebellion more than the
present. I, for instance, think it is far better to fight incompetence
than to live peacefully with incompetent people. Some people feel this
way about drugs, abortion, communism, etc. That macros in Common Lisp
should be such an issue should come as a surprise to no one. However,
there is much, much less _force_ involved in having to accept macros than
any of the other issues that cause similar reactions, so I have a really
hard time understanding the underlying desires of the people who go nuts
about "unhygienic" macros and the like. Matter of fact, I think they are
insane and fanatical because there is absolutel no _point_ in rebelling
against macros. Just understand them. This is how it works. Deal with
it. If you want to change the way they work, you definitely have to
understand how they work today and all the discarded alternatives.

If you want _any_ system to change, exploit it, do not fight it.
Exploitation causes people who see undesirable consequences of their
goals to review their means of achieving them, perhaps even changing
their goals. Fighting them causes people who are under attack to shut
down all critical processes in self-preservation and defend themselves,
regardless of the cost to their real goals. (Exploitation of (massive)
incompetence, however, is so unethical only Bill Gates and his like could
do it for a long period of time.a)

Now, how to exploit the system-fighters so they themselves implode? I
think Guile is an excellent way to exploit the dislike of Common Lisp and
the adherence to "simpler" ways to do things. With any luck, it turns
into a _complete_ disaster before it has a chance of getting better.

Biep @ http://www.biep.org/

unread,
Jun 7, 2001, 4:50:24 AM6/7/01
to
"Pierre R. Mai" <pm...@acm.org> wrote in message
news:87g0ddzv...@orion.bln.pmsf.de...

> In what way do you feel that writing (serious) macros in CL
> involves 'a lot of "fighting the system"'?

O.K. I take it you are an experienced macro writer.

(1) People like you and me have come to grips with the intricacies of macro
writing, know the pitfalls and how to avoid them, and may even have the
status of "macro guru". This is somewhat like Mel in the story
(http://www.brabandt.de/html/jargon_49.html). I think the very fact that
there are macro gurus indicates that there is a problem: the basic notion
of a macro is very simple, yet it is not trivial for a novice to go and
write good macros.

(2) Macros are (or should be) about meaning one thing when you say
another -- not necessarily about transformations, even though the notions
come close. (To appreciate the difference, see what C macros can do that
they shouldn't..) Let me just give a few examples:

There is a subtle but fundamental difference between the notions of 'fresh
variable' and '(gensym)'. The latter is a kluge to arrive at the former
(or the right thing to do in other contexts, of course).

There is a difference between 'the list function' and '(list ...)'. CLtL2
has 'solved' the resulting problem by requiring that no built-in function
can be redefined, but that is of course a weakness bid.

Lisp has fought hard to get rid of (default) dynamic scoping, but in macros
this is still the default. If your macro references a variable X, it just
grabs whatever X happens to be available at the location where the macro is
used. Like dynamic scoping for lambdas, people who have gotten used to
that tend to like it, and indeed can proffer a whole battery of situations
where this 'feature' can be exploited -- again the guru phenomenon.
Normally you mean 'this variable' but have to write 'X', again not quite
the same thing. As with functions, lexical scoping (referential
transparency) should be the default, with an option for dynamic scoping.

(3) So since the macro writer wants to state "whenever I say this I MEAN
that", but the system wants to hear "whenever you say this, I should assume
that you SAID that", macro writing necessarily involves fighting the
system. It is a lot like legalese: a lawyer is also a guru in bringing a
meaning across in a system that tends to look at texts, but it involves
non-trivial phrasings, and often a lot more text than one might have
thought. If a non-guru draws up a legal document, it is likely there are
loopholes.

Does that help? Again, if you are familiar with the system, the
"macrolese" may come naturally, and even appear obvious, and definitely
prove exploitable in ways that a "correct" solution would not be -- again
the comparison with lawyers comes to mind :-)

Janis Dzerins

unread,
Jun 7, 2001, 5:53:35 AM6/7/01
to

> "Pierre R. Mai" <pm...@acm.org> wrote in message
> news:87g0ddzv...@orion.bln.pmsf.de...
> > In what way do you feel that writing (serious) macros in CL
> > involves 'a lot of "fighting the system"'?
>
> O.K. I take it you are an experienced macro writer.
>
> (1) People like you and me have come to grips with the intricacies
> of macro writing, know the pitfalls and how to avoid them, and may
> even have the status of "macro guru".

Pleas call me "eating guru". I eat every day. I even use that super
cool tool called spoon.

If you call everyone who has learned to use something a "guru" then I
think this word is overloaded (in the C++ sense).

> I think the very fact that there are macro gurus indicates that
> there is a problem:

Could you please state once more for me what exactly is "macro guru"?

> the basic notion of a macro is very simple, yet it is not trivial
> for a novice to go and write good macros.

It is not trivial for *anybody* to make something of quality without
learning how to do it. Even if the tools are simple and have taken a
lot of time to become such.

> (2) Macros are (or should be) about meaning one thing when you say
> another

Macro is a tool -- the one that lets you, as a programmer, extend the
language. It's not just a text replacing tool (although you may want
use it as such). Looks like you want something and think it is macros
but it ain't.

> There is a subtle but fundamental difference between the notions of
> 'fresh variable' and '(gensym)'. The latter is a kluge to arrive at
> the former (or the right thing to do in other contexts, of course).

It may be a kludge for you. It does not mean that it is a kludge for
other programmers. It might also be that macros are not suitable for
the task you want to use them for and thus may look like a
kludge. Might be that you just have not learned and do not understand
them.

If you have invented a way to make macros better please show it to
us. I'm sure everyone here will appreciate it. Until then we're all
using what has worked until now.

> There is a difference between 'the list function' and '(list ...)'.

Can't understand what you're talking about.

> CLtL2 has 'solved' the resulting problem by requiring that no
> built-in function can be redefined, but that is of course a weakness
> bid.

In what way it is a weakness?

If you write a program that uses LIST function and then someone else
changes that function, how do you expect your program to work?

> Lisp has fought hard to get rid of (default) dynamic scoping, but in
> macros this is still the default.

I'd say macros have no different scoping.

> If your macro references a variable X, it just grabs whatever X
> happens to be available at the location where the macro is used.

Yes. And thats what it is supposed to do (although I don't like the
term "grabs").

> Like dynamic scoping for lambdas, people who have gotten used to
> that tend to like it, and indeed can proffer a whole battery of
> situations where this 'feature' can be exploited -- again the guru
> phenomenon.

I don't completely understand what you mean by "dynamic scoping for
lambdas". But I can't see any guru phenomenon here.

> Normally you mean 'this variable' but have to write 'X', again not
> quite the same thing.

Can't follow you without a piece of code.

> As with functions, lexical scoping (referential transparency) should
> be the default, with an option for dynamic scoping.

Talking about language design?

I'd say -- if there's something missing in Common Lisp for you, go
write it. But it would most probably require writing macros which
don't quite understand.

> (3) So since the macro writer wants to state "whenever I say this I MEAN
> that",

I'd say it's more like "whenever I say this I MEAN this".

> but the system wants to hear "whenever you say this, I should assume
> that you SAID that", macro writing necessarily involves fighting the
> system.

There's no fighting. The system does exactly what you tell it to do,
according to The Standard.

> Again, if you are familiar with the system, the "macrolese" may come
> naturally, and even appear obvious, and definitely prove exploitable
> in ways that a "correct" solution would not be

Macros *are* a correct solution to correct problems. If you're afraid
to familiarize yourself with the system it looks like your problem not
Lisp's.

--
Janis Dzerins

If million people say a stupid thing it's still a stupid thing.

Biep @ http://www.biep.org/

unread,
Jun 7, 2001, 6:02:55 AM6/7/01
to
"F. Xavier Noria" <f...@isoco.com> wrote in message
news:3b0370ef...@news.iddeo.es...

> I asked in comp.lang.perl.misc whether anyone had considered
> to use closures to store session state in web applications
> as Paul Graham explains in the continuation of
> "Beating the Averages".

Session states in web applications are essentially continuations. See the paper
http://www.cs.rice.edu/CS/PLT/Publications/esop2001-gkvf.pdf.gz

Biep @ http://www.biep.org/

unread,
Jun 7, 2001, 8:26:44 AM6/7/01
to
> > = me ("Biep @ http://www.biep.org/")

Let me start by clarifying that I am NOT complaining about anything, I was
simply explaining why certain code was somewhat complex, and happened to use
"fighting the system" in my explanation. In particular, I am NOT saying that
anything should change.


"Janis Dzerins" <jo...@latnet.lv> wrote in message
news:878zj4v...@asaka.latnet.lv...


> If you call everyone who has learned to use something a "guru" then I
> think this word is overloaded (in the C++ sense).

I don't. I mean that people walk up to me, even though they are decent
programmers, to have me get wrinkles out of their macro. Of if they don't walk
up to me, I can often construct a context in which their macro doesn't do what
they had intended it to do.

> Macro is a tool -- the one that lets you, as a programmer, extend the
> language. It's not just a text replacing tool (although you may want
> use it as such). Looks like you want something and think it is macros
> but it ain't.

I know what a macro is, and how to write them. I was simply explaining what I
meant with "fighting the system".

> If you have invented a way to make macros better please show it to
> us. I'm sure everyone here will appreciate it. Until then we're all
> using what has worked until now.

Of course. A lot of research is going on (more in the Scheme community than in
the CL community as far as I am aware), but I don't think the final solution has
been found yet. Obviously, until that happens we all happily go on hacking.

> > There is a difference between 'the list function' and '(list ...)'.
> Can't understand what you're talking about.

About someone calling your macro in the context of an (flet ((list ..)) ..).
CLtL2 saves you here, but if instead of 'list' it were a function you had
defined yourself, you would still be bitten. Lexical scoping would have saved
you here, would have allowed you to write a protected lexical scope that would
also have saved you from redefinitions.

> In what way it is a weakness?

If doing something turns out to go wrong, and it can be fixed, I consider it a
weakness simply to forbid doing it. It is a bit of brittleness in an otherwise
sturdy language. I don't want to see CL turn into a "you cannot do that"
language -- we have already enough of those.

> If you write a program that uses LIST function and then someone else
> changes that function, how do you expect your program to work?

By wrapping a scope around your functions that protects the original definition
of list.

> > If your macro references a variable X, it just grabs whatever X
> > happens to be available at the location where the macro is used.
>
> Yes. And thats what it is supposed to do (although I don't like the
> term "grabs").

..and that's dynamic scoping. An X in a lambda doesn't behave that way: it
always refers to the X in the context in which the lambda was defined. I have
been way too much in the discussion of dynamic vs. lexical scoping for lambda's,
and endlessly heard exactly the phrase you use "And that's what it is supposed
to do", and don't have the energy any more to go into that discussion, sorry.
Nothing personal. You might want to check
http://www.acm.org/pubs/citations/proceedings/lfp/62678/p86-bawden/ if you are
an ACM member. (If you are not, you might find a working version of that paper
at ftp://altdorf.ai.mit.edu/pub/scheme-reports/synclo.ps).

> There's no fighting. The system does exactly what you tell it to do,
> according to The Standard.

In that case writing VB is no fighting either.. :-)

Erik Naggum

unread,
Jun 7, 2001, 9:19:02 AM6/7/01
to
* "Biep @ http://www.biep.org/" <repl...@my-web-site.com>

> (1) People like you and me have come to grips with the intricacies of macro
> writing, know the pitfalls and how to avoid them, and may even have the
> status of "macro guru". This is somewhat like Mel in the story
> (http://www.brabandt.de/html/jargon_49.html). I think the very fact that
> there are macro gurus indicates that there is a problem: the basic notion
> of a macro is very simple, yet it is not trivial for a novice to go and
> write good macros.

How can you both invent _and_ lament the macro guru at the same time?
There is no such thing as a macro guru. There are, however, macrophobes.

> (2) Macros are (or should be) about meaning one thing when you say
> another -- not necessarily about transformations, even though the notions
> come close. (To appreciate the difference, see what C macros can do that
> they shouldn't..) Let me just give a few examples:

Macros are in fact implemented as transformations. What you make of them
is up to you. Ingenious use of macros can make some things very easy to
understand. Idiot use of macros make things harder to understand. What
else is new? Incidentally, every "should be" betrays an agenda. Before
things "should be", study what they _are_. Your problem is that you
started to "should be" before you understood how things are. (This has
been evident for a long time, by the way.)

> There is a subtle but fundamental difference between the notions of 'fresh
> variable' and '(gensym)'. The latter is a kluge to arrive at the former
> (or the right thing to do in other contexts, of course).

So you choose to rebel against the obvious, and call things "kluge" that
are simply means of achieving something you need. What else is new?
Rebels _are_ usually clueless. This is how we do these things. If you
do not like it, invent something better. Criticizing without improvement
is just so much useless whining.

> There is a difference between 'the list function' and '(list ...)'.
> CLtL2 has 'solved' the resulting problem by requiring that no built-in
> function can be redefined, but that is of course a weakness bid.

Could you try to _explain_ your mindset instead of giving examples that
make sense only to yourself?

> Lisp has fought hard to get rid of (default) dynamic scoping, but in macros
> this is still the default.

Really?

> If your macro references a variable X, it just grabs whatever X happens
> to be available at the location where the macro is used.

This is not what we call dynamic scope.

> Like dynamic scoping for lambdas, people who have gotten used to that
> tend to like it, and indeed can proffer a whole battery of situations
> where this 'feature' can be exploited -- again the guru phenomenon.

When will it occur to you that _you_ are actually inventing the gurus?

> Normally you mean 'this variable' but have to write 'X', again not quite
> the same thing. As with functions, lexical scoping (referential
> transparency) should be the default, with an option for dynamic scoping.

That _is_ the situation today.

FYI: people have written macros that hide the mechanics of "fresh
variables". Those should arguably have been part of the language, but
they are not, for whatever reason. So it is part of the oral tradition.
Big deal. Learning to do anything well requires effort. If instead of
learning you rebel against the effort, you will never do it well, and
that itself will be an argument in favor of not doing it the way it
should be done.

I submit that the way you have treated macros in Common Lisp is exactly
the same way that turn people into criminals. Rather than understanding
the existing set of rules and living within them, they break them out of
sheer ignorance and arrogance, then the rules hit them back, because they
are not quite as arbitrary as the whim of those who break them, and they
get _another_ reason to break the rules: The rules are bad and they hurt
you. If you want to break the rules, first you must understand them and
then break them by achieving what they were intended to achieve better
than the rules already achieve, such as by eliminating a negative side
effect. Otherwise, there is no constructive element in breaking the
rules, only destructiveness, and that is never appreciated, except
possibly by others of the same rebel inclination.

> (3) So since the macro writer wants to state "whenever I say this I MEAN
> that", but the system wants to hear "whenever you say this, I should
> assume that you SAID that", macro writing necessarily involves fighting
> the system.

What if you got it all wrong? What if _you_ are fighting "the system"
only because you have misuderstood what "the system" is doing and how it
works?

> It is a lot like legalese: a lawyer is also a guru in bringing a meaning
> across in a system that tends to look at texts, but it involves
> non-trivial phrasings, and often a lot more text than one might have
> thought. If a non-guru draws up a legal document, it is likely there are
> loopholes.

And the problem here is what?

> Does that help? Again, if you are familiar with the system, the
> "macrolese" may come naturally, and even appear obvious, and definitely
> prove exploitable in ways that a "correct" solution would not be -- again
> the comparison with lawyers comes to mind :-)

An analogy to a skilled craftsman versus an unskilled craftsman comes to
_my_ mind. Maybe that is because I happen to think that the idiotic
attitude problem many people have towards lawyers is based in exactly the
same willful and arrogant ignorance of "the system" that those who hate
macros or Lisp in general suffer from.

This is only a problem with _your_ approach to macros, "Biep @
http://www.biep.org/". If you could bother to study how it works and try
to learn to use it properly, you would probably be able to find a way to
express what you need, just the way you want to express it. You see, the
whole idea with macros is expressibility.

Simply put: If you do not want to learn the language, do not blame the
language for your inability to express yourself in it.

Marco Antoniotti

unread,
Jun 7, 2001, 10:13:05 AM6/7/01
to

...

> > If you have invented a way to make macros better please show it to
> > us. I'm sure everyone here will appreciate it. Until then we're all
> > using what has worked until now.
>
> Of course. A lot of research is going on (more in the Scheme
> community than in the CL community as far as I am aware), but I
> don't think the final solution has been found yet. Obviously, until
> that happens we all happily go on hacking.

Of course in Scheme you have to "fight the (impoverished) system" much
much more than in CL, just to make it usable as a whole.

Cheers

--
Marco Antoniotti ========================================================
NYU Courant Bioinformatics Group tel. +1 - 212 - 998 3488
719 Broadway 12th Floor fax +1 - 212 - 995 4122
New York, NY 10003, USA http://bioinformatics.cat.nyu.edu
"Hello New York! We'll do what we can!"
Bill Murray in `Ghostbusters'.

Biep @ http://www.biep.org/

unread,
Jun 7, 2001, 10:46:22 AM6/7/01
to
Erik, would you please go away? If you had bothered to try to read what I
wrote, you would have understood that I don't have the least problem expressing
what I want to express using the CL macro system, and that I do not propose that
anything should change. This is the second time you, out of nothing, start
spouting stuff at me that has nothing to do with what I am writing about and is
at the same time offensive.

Biep @ http://www.biep.org/

unread,
Jun 7, 2001, 10:57:07 AM6/7/01
to
"Marco Antoniotti" <mar...@cs.nyu.edu> wrote in message
news:y6c1yow...@octagon.mrl.nyu.edu...

> Of course in Scheme you have to "fight the (impoverished) system"
> much much more than in CL, just to make it usable as a whole.

Well, if you stick to the standard, it is not so much fighting as simply being
unable to. (O.K., CPS style macros might be considered fighting the system, but
then CPS is popular in Scheme circles..)

Fortunately virtually every implementation goes well beyond the standard, but it
is a shame that decent macros are often necessarily unportable.

I think that is inherent in the different approaches: CL wants something that
works, and wants it now, and Scheme wants the right thing or nothing - and often
that is nothing.

Erik Naggum

unread,
Jun 7, 2001, 10:57:21 AM6/7/01
to
* "Biep @ http://www.biep.org/" <repl...@my-web-site.com>
> Let me start by clarifying that I am NOT complaining about anything [...]

Hmmm.

> I mean that people walk up to me, even though they are decent
> programmers, to have me get wrinkles out of their macro. Of if they
> don't walk up to me, I can often construct a context in which their macro
> doesn't do what they had intended it to do.

Seems to me you are indeed complaining instead of solving the problem.
If you know this stuff so well (which I have yet to see evidence of),
either your communication skills towards the people you are helping is
lacking, or they fail to learn enough from you. Write a paper on proper
macro-writing and publish it. From what I have seen so far, you should
expect criticism of your narrow view of their uses and purposes.

> I know what a macro is, and how to write them.

I am a fairly good marksman, and after having seen little improvement in
my shooting in the past couple months, I worried to a fellow marksman,
much, much better than me, that I had reached the apex of my skills. He
looked amused and said he had experienced the same thing several times
and always needed advice from better marksmen to change some of the
things he did not think needed improvement, some of them rather dramatic.
One of the great things about truly useful skills is that there is always
more to learn. Optimization has the drawback that if you optimize the
wrong way, for the wrong purpose, you end up being good at something that
is simply _wrong_ to be good at. If you still insist on improving, you
may in fact get worse to an objective eye, since you fail to reach the
goal. (This part is fortunately impossible in shooting. It is such an
easy way to get feedback.)

> Of course. A lot of research is going on (more in the Scheme community
> than in the CL community as far as I am aware), but I don't think the
> final solution has been found yet. Obviously, until that happens we all
> happily go on hacking.

In my view, the final solution on macros has already been found. Scheme
folks are continuing to "research" down the wrong path, as they have for
many, many years. They are like the "doctors" of the past who thought
illness was in the blood, and go on with their "research" despite the
discovery of penicillin elsewhere.

> About someone calling your macro in the context of an (flet ((list ..)) ..).

The problems in Scheme are not the problems in Common Lisp. If a Scheme
jerk does that in Common Lisp, he breaks the rules, written and unwritten
and should not blame the language for his ignorance.

"Doctor, doctor, it hurts when I make this contorted movement."
"So don't do it."

> CLtL2 saves you here

You know, one of the symptoms of your lack of sufficient effort is that
you think CLtL2 is the authoritative reference. You may not be aware of
this, but ANSI X3.226 Common Lisp has been issued, in fact was issued on
1994-12-15. It is now the authoritative reference on Common Lisp. You
can find hypertext versions on the Net if you too cheap to buy the real
thing from ANSI.

> but if instead of 'list' it were a function you had defined yourself, you
> would still be bitten.

But why should the macro be using it? Obviously, the macro references an
environment known to it, and draws on functions that are well-defined in
it. If you change those with flets, you should be fully aware of the
consequences. Incidentally, if you feel that this is such a drag, the
rule that you should not redefine functions in the common-lisp package is
not an arbitrary restriction. It is good advice never to redefine a
function locally that has a global, _published_ definition. If you _do_
do so, it is for the obvious side effect that you blame "gurus" for.

Does this mean that the application programmer should be mortally afraid
of screwing with somebody's names, like he would be in a one-namespace,
no-packages language like Scheme? Not at all. Packages have published
and unpublished symbols, mind you, so if you take care to review the
published symbols in a package you have used, you follow the same rule
for _any_ package you use as you do for the common-lisp package. Only
the standard could not have mandated the same thing for your symbols as
it does for the standard symbols.

I think the rule is really, really simple: If the symbol is not in your
own package, be very cautious. Now, there are some "problems" with the
package symbol in that it would have been lovely if the various values of
a symbol could be treated differently, but this quickly leads to serious
problems, too.

Some other languages require serious ownership protocols for objects.
Common Lisp requires an ownership protocol for symbols, instead. The
former are runtime concerns.. The latter are read-time concerns and
should be covered by interprogrammer communication, a.k.a. documentation.

> Lexical scoping would have saved you here, would have allowed you to
> write a protected lexical scope that would also have saved you from
> redefinitions.

Really? Are you sure you understand what lexical and dynamic scope are
all about? It sure looks like you have skipped a few classes on this.

> If doing something turns out to go wrong, and it can be fixed, I consider
> it a weakness simply to forbid doing it.

An amazing attitude. How is this reflected in your view of society in
general? Or are you one of those bondage-and-discipline programmers who
want static type checking, class-owned methods, etc, too? If so, why do
you bother with Common Lisp at all?

> It is a bit of brittleness in an otherwise sturdy language.

It is called "flexibility and responsibility". It can be bent, but if
you bend it out of shape or break it, that is your responsibility. If
you set up the rules so that you need never bend them, somebody else will
feel imprisoned in your language. I can say right now that I would not
use the language you think is so much better than Common Lisp.

> I don't want to see CL turn into a "you cannot do that" language -- we
> have already enough of those.

Precisely, but you argue very strongly in favor of just that. Exactly
like a politician who loves freedom as long as everybody does what he
thinks is best for them. Freedom in a society is not a question of what
you can do within the rules, it is a question of what happens to those
who want to break or change the rules because they think the rules are
wrong. Macros in Common Lisp makes it possible for freedom fighters to
write their _own_ rules. Some people are incredibly emotionally opposed
to such a concept, calling it "anarchy" and all sorts of negative things.
I read you to be such a person.

> By wrapping a scope around your functions that protects the original
> definition of list.

This may be done with a code-walking macro. Go write it.

> > > If your macro references a variable X, it just grabs whatever X
> > > happens to be available at the location where the macro is used.
> >
> > Yes. And thats what it is supposed to do (although I don't like the
> > term "grabs").
>
> ..and that's dynamic scoping.

Bzzzzzt! Wrong!

> An X in a lambda doesn't behave that way: it always refers to the X in
> the context in which the lambda was defined.

Which lambda are you talking about now? Are you perchance unaware of the
effect of special declarations, which do in fact make real dynamic scope?

> I have been way too much in the discussion of dynamic vs. lexical scoping
> for lambda's, and endlessly heard exactly the phrase you use "And that's
> what it is supposed to do", and don't have the energy any more to go into
> that discussion, sorry. Nothing personal. You might want to check
> http://www.acm.org/pubs/citations/proceedings/lfp/62678/p86-bawden/ if
> you are an ACM member. (If you are not, you might find a working version
> of that paper at ftp://altdorf.ai.mit.edu/pub/scheme-reports/synclo.ps).

Precisely. You want syntactic closures. You can have that in addition
to macros. You know how you can get that, do you not? If not, let me
remind you of how to write macros: Use copy-symbol for all symbols
referenced in the macro body, and refer to the uninterned symbols you
have created. Pretty easy to do. I suggest you show us how to do it,
since you (1) know how to write macros, and (2) need this. If you do
not, I just conclude that you are one of those people who have a Scheme
brain that cannot deal with Common Lisp. There are a lot of those in the
Scheme community. It is one of the reasons I want such Scheme people to
go to hell. Fortunately, they are doing it on their own, anyway. It is
also one of the reasons I no longer consider Scheme a Lisp.

Wade Humeniuk

unread,
Jun 7, 2001, 11:00:55 AM6/7/01
to
Quit being a troll.

Or in CL

(defvar biep (open "ears" :direction :input))
(write "Quit Being A Troll!" :stream biep)
(flush-output biep)
(close biep)

Or with a CL macro

(with-open-file (biep "ears" :direction :input)
(write "Quit Being A Troll!" :stream biep)
(flush-output biep))

Wade

"Biep @ http://www.biep.org/" <repl...@my-web-site.com> wrote in message
news:9fo442$53sri$1...@ID-63952.news.dfncis.de...

Erik Naggum

unread,
Jun 7, 2001, 11:04:59 AM6/7/01
to
> Erik, would you please go away?

No, "Biep @ http://www.biep.org/".

It is mot my fault that you expose your ignorance and your arrogance
about what you do not understand. You are one of those who think they
have nothing more to learn and instead spend your time blaming what you
have not studied for the fact that you do not understand it properly.

It has been obvious for quite a while that you are here only to talk, not
to listen, not to learn, not to appreciate contrary opinions and views.
I suggest that you retreat to your Scheme world and enjoy yourself
instead of wasting your time here, being as you are the one to suggest
that people go away.

You are making a problem look much harder than it is because you have
failed to understand it. It behooves a critic to be well educated. You
are not in the topic at hand. Maybe you are so "educated" in other
things you actually believe you do not have to know specifics, anymore,
but then that is the problem in this debate, not the issues at hand.

Just write the macros that produce the effects you want. Publish them.
It is actually that is. The fact that you can is the strength of the
Common Lisp macro system. The fact that you _cannot_ do this in a
syntactic closures system is a weakness of that system. The fact that
you might have to is not a blemish or a weakness of a language that was
expressly designed to let people build their own tools within it. If you
want a language that _enforces_ what you think is right, that language is
not Common Lisp, and the community you should talk to is not the Common
Lisp community.

Marco Antoniotti

unread,
Jun 7, 2001, 11:03:04 AM6/7/01
to

Excellent point. Although I'd go as far as saying, that most of the
time, what works (in CL) also happens to be "the rigth thing".

Duane Rettig

unread,
Jun 7, 2001, 12:22:43 PM6/7/01
to
"Biep @ http://www.biep.org/" <repl...@my-web-site.com> writes:

> Erik, would you please go away??

Don't want to deal with it, eh?

> If you had bothered to try to read what I
> wrote, you would have understood that I don't have the least problem

> expressing what I want to express ...

Then again, maybe you do want to deal with it...

When people express themselves, there are two possible motivations for
doing so. One is emotion - when people emote, they don't care about
others hearing what they have to say, but the goal is in the expression
itself. For example, artists must be able to express themselves freely
without necessarily having to communicate. Complainers also express
themselves without communicating.

The second aspect of expression _is_ communication. Communication has
both a sender and a receiver of information. Those who express themselves
well in this sense have a good idea as to how their listeners are receiving
what they have to say.

Now, the first part of the second sentence above tells me that you don't
want to just spout off, but that you want people to understand what you say.
However, I contend that you are not necessarily doing that well. And the
fault may be ours completely, because of our point-of-view, but let's take
an example of how you should try to listen to yourself from my point of
view if you want me to understand you:

You give your web address as http://www.biep.org/. However, when I
tried to get to your website in my netscape, I got an error:
"This Virtual Directory does not allow contents to be listed."
Now, I don't know what the problem is, here; it may be a problem
entirely on my end. However, I never have any trouble getting anywhere
else on the web, and so your site is particular in at least one
sense. Perhaps your site is just busy, or perhaps you have never tested
it using Netscape on a unix box. However, this just illustrates the
points Erik and Marco were trying to make:

If we disagree on the usage of macro writing, perhaps it is because
there is a disconnect between what you are saying and what we are hearing.
Many of the things that Erik specifically mentioned communicated to me
that he had indeed read and understood what you were saying, and if these
understandings were not what you were trying to say, then you must
find a way to close the communication gap if you want people to
understand you.

I suggest that you go back over Erik's post and respond point-by-point,
correcting any mistaken assumptions that he might have made. Bear in mind,
that I had the same assumptions that he did, and would have responded
to at least a couple of your points in similar manner. For example,
the fact that the CL community does not care to continue developing
their macro system and the scheme community does, suggests to me that
the scheme community is dissatisfied with their macro system, whereas
the CL community is satisfied with theirs.

--
Duane Rettig Franz Inc. http://www.franz.com/ (www)
1995 University Ave Suite 275 Berkeley, CA 94704
Phone: (510) 548-3600; FAX: (510) 548-8253 du...@Franz.COM (internet)

Tim Moore

unread,
Jun 7, 2001, 1:16:17 PM6/7/01
to

Graham's session-state-as-closures technique is a cool hack, but I wonder
how scalable it is. It forces a remote user to be served by the same
Lisp image (on the same machine, obviously) on every transaction. While
it's desirable to do that for caching reasons, etc., it's not great to
rely on that mode of operation: load balancing, hardware failure,
and network problems/instability, to name a few factors, all conspire
against it.

Tim


Thomas F. Burdick

unread,
Jun 7, 2001, 2:25:09 PM6/7/01
to
Tim Moore <mo...@herschel.bricoworks.com> writes:

While these would make slight problems, I think he was trying to make
the client-server connection seem (from the point of view of the
programmer writing the application logic) like a continuous connection
for the term of the interaction: something most of us want to do when
writing web apps. Load balancing could occur on a per-session, rather
than a per-http-request basis. I don't think you'll lose much, at
least on large systems. Hardware and network failure hopefully occur
infrequently enough that this won't happen during the course of a
given session. Otherwise you've got bigger problems.

Jochen Schmidt

unread,
Jun 7, 2001, 2:42:03 PM6/7/01
to
Wade Humeniuk wrote:

> Quit being a troll.
>
> Or in CL
>
> (defvar biep (open "ears" :direction :input))
> (write "Quit Being A Troll!" :stream biep)
> (flush-output biep)
> (close biep)
>
> Or with a CL macro
>
> (with-open-file (biep "ears" :direction :input)
> (write "Quit Being A Troll!" :stream biep)
> (flush-output biep))

Nice said ;-)
But Biep will hear more if we use :output as :direction.
The standpoint taken in CLs notion of "direction" is the Lisp System not
the file. So "input" means "The Lisp System gets input from a file"
and "output" means "The Lisp System outputs to a file"

Regards,
Jochen

Kent M Pitman

unread,
Jun 7, 2001, 2:36:06 PM6/7/01
to
Duane Rettig <du...@franz.com> writes:

> [context elided. see prior posts if that matters to you.]


>
> For example, the fact that the CL community does not care to
> continue developing their macro system and the scheme community
> does, suggests to me that the scheme community is dissatisfied with
> their macro system, whereas the CL community is satisfied with
> theirs.

I think this is a good point.

I think the Scheme community is puzzled by the fact that CL doesn't
have a hygienic macro system and yet doesn't run into all kinds of
problems as a result. Usually this kind of "surprise" comes from
momentarily making the mistake of assuming that the conversation can
usefully proceed by idealizing the differences between the two
languages as being "only this" and assuming that what keeps the
conversation focused will not leave out critical information that
makes the conversation meaningful. It is impossible to have a
conversation about macros without a conversation on namespaces and
packages (and "hygiene" is as much about those other two issues as it
is about macros). Yet they mostly forget to bring them into play when
looking at our macro system. We in CL rely on the Lisp2ness and on
the package system to protect us from name conflicts, and in practice,
it does. To my knowledge, having worked at several Lisp vendors and
having used CL now about 2 decades years, people who know what they
are doing reliably do not run into any problems with name collisions
in CL. The problem just doesn't come up. The ecology works.

I guess my point is that Duane is not just speculating when he says
"suggests to me that...". There's pretty extensive experience with
myriad users and multiple implementors over a really long time (in
"contemporary programming language use" terms) to suggest that the
reason no one is "evolving" the CL macro system is that it works just
fine.

In fact, historically, the biggest boom in Lisp productivity and expansion
that I've ever seen occur was around the time that people discovered the
creation and exchange of "cool macros". Lots of macro packages were offered
by the system and by users, and, by all accounts, productivity AND program
reliability went way up because tedious idiomatic uses didn't have to be
painstakingly repeated any more, at risk that people would find the longhand
versions too painful to do in full form or that they would make a mistake
in adjusting them for context. Macros changed the Lisp world, very much
for the better. And since that time, I've heard no regrets and no "gee,
this is getting out of hand". Rather, I've heard people continuing to
be amazed by how many layers you can create of macro on macro and still get
utterly reliable outcomes.

Paolo Amoroso

unread,
Jun 7, 2001, 3:23:59 PM6/7/01
to
On Thu, 7 Jun 2001 10:50:24 +0200, "Biep @ http://www.biep.org/"
<repl...@my-web-site.com> wrote:

> (http://www.brabandt.de/html/jargon_49.html). I think the very fact that
> there are macro gurus indicates that there is a problem: the basic notion

So what? In all human activities there are both novices and gurus.


Paolo
--
EncyCMUCLopedia * Extensive collection of CMU Common Lisp documentation
http://cvs2.cons.org:8000/cmucl/doc/EncyCMUCLopedia/

Espen Vestre

unread,
Jun 7, 2001, 3:43:39 PM6/7/01
to
Tim Moore <mo...@herschel.bricoworks.com> writes:

> Lisp image (on the same machine, obviously) on every transaction. While
> it's desirable to do that for caching reasons, etc., it's not great to
> rely on that mode of operation: load balancing, hardware failure,
> and network problems/instability, to name a few factors, all conspire
> against it.

I don't agree. You should trust your hardware, network etc. enough to
be able to assume that each component can serve the same user through a
session.

And I think layer 4 switches like Foundry Server Iron solve the load
balancing issue for you.
--
(espen)

Wade Humeniuk

unread,
Jun 7, 2001, 4:20:22 PM6/7/01
to
I made a mistake :), let me correct,

In the first case

(close biep) ; since it was not cleaned up
(setf biep (open "ears" :direction :output))


(write "Quit Being A Troll!" :stream biep)
(flush-output biep)
(close biep)

Or with the macro

(with-open-file (biep "ears" :direction :output)


(write "Quit Being A Troll!" :stream biep)
(flush-output biep))

But I think I really should have created a new macro like

(with-persons-aural-attention (biep :uri "http://www.biep.org")
(tell biep "Quit Being A Troll!"))

or

(biep! Quit Being A Troll!)

or

(biep!!!!!!!)

After all thats what macros are for.

Wade


"Jochen Schmidt" <j...@dataheaven.de> wrote in message
news:9fohim$566pj$1...@ID-22205.news.dfncis.de...

Tim Moore

unread,
Jun 7, 2001, 4:34:19 PM6/7/01
to
On 7 Jun 2001, Espen Vestre wrote:

> Tim Moore <mo...@herschel.bricoworks.com> writes:
>
> > Lisp image (on the same machine, obviously) on every transaction. While
> > it's desirable to do that for caching reasons, etc., it's not great to
> > rely on that mode of operation: load balancing, hardware failure,
> > and network problems/instability, to name a few factors, all conspire
> > against it.
>
> I don't agree. You should trust your hardware, network etc. enough to
> be able to assume that each component can serve the same user through a
> session.

Large websites are complex systems. You can't assume this unless you
build a great deal of redundancy into the system or you don't care that
much if session data is lost.

> And I think layer 4 switches like Foundry Server Iron solve the load
> balancing issue for you.

I think you mean "solve the combination of load balancing and session
affinity" as you can obviously solve load balancing and break session
affinity. Yes, the features of that switch look like they might do the
trick, assuming you're willing to work within the constraints of their URL
and cookie parsing support and also assuming you're willing to put up with
a single point of failure.

I don't want to overstate my "argument": store building, even at Yahoo!,
is not a high volume application and may work fine on a single machine.
Losing intra-page transitions is probably not a huge deal. And I like the
idea of using closures for this application. But I still don't think it
scales well.

Wandering off topic,
Tim


Bulent Murtezaoglu

unread,
Jun 7, 2001, 5:01:55 PM6/7/01
to
>>>>> "TM" == Tim Moore <mo...@herschel.bricoworks.com> writes:

TM> [...] Yes, the features of that switch
TM> look like they might do the trick, assuming you're willing to
TM> work within the constraints of their URL and cookie parsing
TM> support and also assuming you're willing to put up with a
TM> single point of failure.

My understanding is that you need to store the session context
somewhere anyway, closures or not. If you want to avoid the single
point of failure sitting in frot of your server farm, one alternative
might be to decouple your session context storage from the web server
and move it to the back-end. You still need some replication and auto
failover somewhere to satisfy the no single point of failure constraint.
Then the issue becomes whether closures can still the used under this
scheme, and I suspect, for practical purposes, it would be too much
pain to get "persistent" closures. I would be thrilled to see an
elegant solution to this though.

TM> I don't want to overstate my "argument": store building, even
TM> at Yahoo!, is not a high volume application and may work fine
TM> on a single machine.

You don't need a single machine or even the fancy switch, your front
end web servers can possibly do the right thing if you solve the
session-id to lisp image mapping problem in a robust way (possibly
via the same mechanism above).

TM> Losing intra-page transitions is
TM> probably not a huge deal.

I agree, for this to hurt you the likelihood of the lisp server machine
going down while the user has an active session has to be appreciable.
Outside of that, any particular machine doing down does not hurt you.

cheers,

B<more and more OT>M

Kent M Pitman

unread,
Jun 7, 2001, 5:28:30 PM6/7/01
to
Tim Moore <mo...@herschel.bricoworks.com> writes:

> ... I like the idea of using closures for this application. But I


> still don't think it scales well.

Where is this technique discussed? I'd like to peek in at it and compare
notes. If I understand you correctly, I've used this technique myself,
effectively giving continuation closures a handle and then having the session
call back looking for a continuation by name. If you assume one-time
reuse and timeout, it works pretty well. If you can re-visit the same
continuation more than once or if you can't GC them, it's a problem.

I don't see what the issue is with "scaling", though I can imagine we might
be talking slightly at crossed purposes. When I say "closures" I don't
mean literally (lambda ...) closures [at least not without a little additional
programming work, which I think *could* be done] but rather the general
concept. Could you maybe elaborate on the scaling problems you see so I can
try to see if I'm just missing something obvious?

I may be available to consult on this if someone has a real application
that needs this and needs help working out the syntax details... ;-)
[Such discussion should go through email, though, not newsgroup.]

Tim Moore

unread,
Jun 7, 2001, 6:47:06 PM6/7/01
to
On Thu, 7 Jun 2001, Kent M Pitman wrote:

> Tim Moore <mo...@herschel.bricoworks.com> writes:
>
> > ... I like the idea of using closures for this application. But I
> > still don't think it scales well.
>
> Where is this technique discussed? I'd like to peek in at it and compare
> notes. If I understand you correctly, I've used this technique myself,

http://www.paulgraham.com/lib/paulgraham/bbnexcerpts.txt

> effectively giving continuation closures a handle and then having the session
> call back looking for a continuation by name. If you assume one-time
> reuse and timeout, it works pretty well. If you can re-visit the same
> continuation more than once or if you can't GC them, it's a problem.
>
> I don't see what the issue is with "scaling", though I can imagine we might
> be talking slightly at crossed purposes. When I say "closures" I don't
> mean literally (lambda ...) closures [at least not without a little additional
> programming work, which I think *could* be done] but rather the general
> concept. Could you maybe elaborate on the scaling problems you see so I can
> try to see if I'm just missing something obvious?

Graham does seem to be using real closures. My scaling concerns, as I've
written in other articles, have to do with requiring sessions to always
return to the same machine.

Keeping some kind of server-side state around for sessions, usually in a
relational database, is common enough for those who've tried to jam
session state into hidden form fields and such.

>
> I may be available to consult on this if someone has a real application
> that needs this and needs help working out the syntax details... ;-)
> [Such discussion should go through email, though, not newsgroup.]

Probably too late for Graham :)

Tim


Craig Brozefsky

unread,
Jun 7, 2001, 8:17:42 PM6/7/01
to
Kent M Pitman <pit...@world.std.com> writes:

> I may be available to consult on this if someone has a real application
> that needs this and needs help working out the syntax details... ;-)
> [Such discussion should go through email, though, not newsgroup.]

Might I suggest the lispweb mailing list as a forum for such
discussion.

See http://www.red-bean.com/lispweb

--
Craig Brozefsky <cr...@red-bean.com>
http://www.red-bean.com/~craig
"Indifference is the dead weight of history." -- Antonio Gramsci

Rob Warnock

unread,
Jun 8, 2001, 12:25:01 AM6/8/01
to
Kent M Pitman <pit...@world.std.com> wrote:
+---------------

| Duane Rettig <du...@franz.com> writes:
| > For example, the fact that the CL community does not care to
| > continue developing their macro system and the scheme community
| > does, suggests to me that the scheme community is dissatisfied with
| > their macro system, whereas the CL community is satisfied with theirs.
|
| I think this is a good point.
|
| I think the Scheme community is puzzled by the fact that CL doesn't
| have a hygienic macro system and yet doesn't run into all kinds of
| problems as a result.
+---------------

Confession: I happen to program in both CL & Scheme and, as it happens,
when I write macros in Scheme I always use "defmacro", since it does the
(to me) obvious & correct thing. [Hygiene? See "gensym".]

+---------------


| There's pretty extensive experience with myriad users and multiple
| implementors over a really long time (in "contemporary programming
| language use" terms) to suggest that the reason no one is "evolving"
| the CL macro system is that it works just fine.

+---------------

That's why I've never bothered to learn R5RS macros, even though they're
"standard" and defmacro isn't. The latter is all I need; I understand what
it does; and all of the implementations of Scheme I use (and of course,
all of the CLs) have it (or something equivalent from which it can be
trivially defined).


-Rob

p.s. It may help that I use to code some *incredibly* complex things
in MACRO-10 (the PDP-10 assembly language) macros way back when... ;-}
It didn't have "gensym" per se -- you had to manually construct your
own unique macro temp symbols by concatenating assembly-time counters
and local prefixes & suffixes & the like. But now that I think about it,
one could have easily written "gensym" *in* MACRO-10 macros! (I just never
would have called it that, since I hadn't been exposed to Lisp yet.)

-----
Rob Warnock, 31-2-510 <rp...@sgi.com>
SGI Network Engineering <http://reality.sgi.com/rpw3/> [until 8/15]
1600 Amphitheatre Pkwy. Phone: 650-933-1673
Mountain View, CA 94043 PP-ASEL-IA

[Note: aaan...@sgi.com and zedw...@sgi.com aren't for humans ]

Biep @ http://www.biep.org/

unread,
Jun 8, 2001, 4:16:40 AM6/8/01
to
Reply via http://www.biep.org

"Kent M Pitman" <pit...@world.std.com> wrote in message
news:sfwhexs...@world.std.com...


> Where is this technique discussed? I'd like to peek in at it and compare
> notes. If I understand you correctly, I've used this technique myself,
> effectively giving continuation closures a handle and then having the session
> call back looking for a continuation by name. If you assume one-time
> reuse and timeout, it works pretty well. If you can re-visit the same
> continuation more than once or if you can't GC them, it's a problem.

Earlier I gave this pointer:
http://www.cs.rice.edu/CS/PLT/Publications/esop2001-gkvf.pdf.gz;
I am not sure that answers your question, but it does discuss re-entrance, which
is interent in the WWW model: people can always return to pages they have
visited before.

--
Biep

Christopher Stacy

unread,
Jun 8, 2001, 4:23:43 AM6/8/01
to
>>>>> On 8 Jun 2001 04:25:01 GMT, Rob Warnock ("Rob") writes:
Rob> p.s. It may help that I use to code some *incredibly* complex things
Rob> in MACRO-10 (the PDP-10 assembly language) macros way back when... ;-}
Rob> It didn't have "gensym" per se -- you had to manually construct your
Rob> own unique macro temp symbols by concatenating assembly-time counters
Rob> and local prefixes & suffixes & the like. But now that I think about it,
Rob> one could have easily written "gensym" *in* MACRO-10 macros! (I just never
Rob> would have called it that, since I hadn't been exposed to Lisp yet.)

The PDP-10 systems at MIT were programmed using the MIDAS assembler,
which was even more powerful than MACRO-10. To wit,

GENSYMMED DUMMIES.

If a gensymmed dummy is unspecified,
its value will be a GENERATED SYMBOL
6 characters long - the first character "G"; the rest,
a number in the current radix whose value equals that of .GSCNT,
which starts out as 0 and is incremented before each gensymming.
Thus, in each call, an unspecified gensymmed dummy
will provide a unique label.
If nullspecified, a gensymmed dummy has the null string as a value.
Gensymmed dummies are treated differently when nullspecified
or unspecified for compatability with old versions of MIDAS.
In fact, the distinction between unspecification and nullspecification
is made only to handle this case.

Examples:

DEFINE GENMAC \FOO,BAR
FOO,,BAR
TERMIN

GENMAC X+1,Y ;Both args specified nonnull.
; X+1,,Y

GENMAC X+1,, ;Second arg nullspecified.
; X+1,, ;Nullspecified args are not gensymmed.

GENMAC X+1 ;Second arg unspecified.
; X+1,,G00001

GENMAC X+1 ;Note uniqueness of gensyms.
; X+1,,G00002

GENMAC() ;Both args unspecified
; G00003,,G00004


GENMAC(,) ;First arg nullspecified; second, unspecified.
; ,,G00005

Biep @ http://www.biep.org/

unread,
Jun 8, 2001, 4:28:21 AM6/8/01
to
"Erik Naggum" <er...@naggum.net> wrote in message
news:32009146...@naggum.net...

> I read you to be such a person.

Yes Erik, you have already shown clearly enough that you cannot read.

If you could, I could give you some hints on reading, like the fact that there
is a semantics phase between input syntax and reply syntax.
I really hope one day you will get to the level that you can read and understand
what I wrote, and see that you are not addressing at all what I am talking
about.

Biep @ http://www.biep.org/

unread,
Jun 8, 2001, 4:32:42 AM6/8/01
to
:-)

But actually, I am not trolling - This started as a simple explanation why some
code was more complex than average, and then Erik jumped in misreading my
comments.

--
Biep
Reply via http://www.biep.org

"Wade Humeniuk" <hume...@cadvision.com> wrote in message
news:9fo4u3$mon$1...@news3.cadvision.com...

Biep @ http://www.biep.org/

unread,
Jun 8, 2001, 4:53:19 AM6/8/01
to
"Kent M Pitman" <pit...@world.std.com> wrote in message
news:sfwk82o...@world.std.com...

> There's pretty extensive experience with myriad users
> and multiple implementors over a really long time (in
> "contemporary programming language use" terms) to suggest
> that the reason no one is "evolving" the CL macro system
> is that it works just fine.

Thanks. That's my point of view too. In fact, I stated so specifically at the
top of one of my messages.
All I was trying to do is to explain why certain code was more complex than
average.
When someone asked me, I tried to explain the difference between a
transformation in meaning and a textual transformation, and I guess at that
point some people started seeing Scheme monsters along the way and got out their
guns.

Now this whole "my Lisp is the perfect Lisp" thing saddens me a bit. I am glad
the Scheme community resisted the ARPA pressure to merge with CL, and I do hope
EuLisp is not still-born, but even then, a mere three Lisps..

Maybe it is just old age, but in my experience the days before standardisation
were much more fun, when you wrote a Lisp with some neat feature and showed it
around, and looked at other peoples' Lisps and took their stuff seriously.

Oh, I know, some research is still going on, but it seems the gusto is gone, and
that is not because we have reached the status of "perfect language"..

Janis Dzerins

unread,
Jun 8, 2001, 5:46:26 AM6/8/01
to

> Maybe it is just old age, but in my experience the days before
> standardisation were much more fun, when you wrote a Lisp with some
> neat feature and showed it around, and looked at other peoples'
> Lisps and took their stuff seriously.
>
> Oh, I know, some research is still going on, but it seems the gusto
> is gone, and that is not because we have reached the status of
> "perfect language"..

As I see it: Common Lisp standard has not stopeed anything -- it's
just a solid foundation for us to build on. Everyone is free to
improve on it (although it's really hard for novices to come up with
something that might be an improvement).

--
Janis Dzerins

If million people say a stupid thing it's still a stupid thing.

Biep @ http://www.biep.org/

unread,
Jun 8, 2001, 8:12:25 AM6/8/01
to
"Janis Dzerins" <jo...@latnet.lv> wrote in message
news:87pucft...@asaka.latnet.lv...
> As I see it: Common Lisp standard has not stopped anything

> -- it's just a solid foundation for us to build on.

Oh, having CL is definitely a good thing, and of course it doesn't forbid
anybody to play around. But the time when Interlisp was in a contest with
MacLisp, when to almost everybody's amazement Scheme(r) brought the
Planner/Conniver line back in the fold by showing that with lexical scoping
Hewitt's actors were identical to procedures, that time seems gone, and I think
too early.

I must confess that on the lexical scoping thing I used to be on the wrong side,
or rather defending having both (having programs such as this Prolog interpreter
that didn't need to pass along most of its arguments in the
backtrack-recursion), but the discussions were there, and there was an enormous
lot of creative energy pushing the barriers forward. It seems most of that has
gone to the FP people (who talks about monads in the Lisp community?), and Lisp
seems to be petering out.

Other languages are (seemingly) overtaking it, and the power of Lisp that made
it run faster and thereby stay miles behind of the pack has been sapped. It is
like the hare falling asleep because it is ahead of the tortoise.

Now maybe I am wrong, and exciting new developments are still leading to
improvements, but the only place where I see that happen is Scheme, and despite
SLib, Scheme is not real-world robust. (Well, that's exaggerated, but there are
definite disadvantages to using Scheme in the Real World.)

My ideal vision would be the big bomber CL moving steadily forward, with a lot
of smaller satellite Lisps around it that cleared the way in front, and then CL
absorbing the space cleared by those satellites. But I see only one satellite,
Scheme, which has its own set of satellites and is in fact (slowly and ever more
slowly) moving forward, but only in one of a host of possible directions, which
is not necessarily the direction CL should go.

Of course Lisp itself is a satellite of the ethereal ideal programming language,
having chosen to explore the untyped lambda calculus, but most of the activity
is happening by the typed lambda calculus people, and if their languages get
better than the best Lisp, research in untyped lambda calculus as a programming
language, or in program-as-data, will all but die when Lisp dies.

I don't care if a language dies because a successor is objectively better, but I
do care if that kills parts that are, or may be, better than corresponding parts
in that successor.

--
Biep
Reply via http://www.biep.org (which is down right now, but sending to any
username whatsoever at that domain will get to me).


John Clonts

unread,
Jun 8, 2001, 9:37:24 AM6/8/01
to

Biep @ http://www.biep.org/ <repl...@my-web-site.com> wrote in message
news:9fq1ol$5fo5i$1...@ID-63952.news.dfncis.de...

By the way, if you have problems with this file (as I did), its probably
because it is actually a pdf file, NOT a gz file. I.e., just rename it to
*.pdf and use your pdf reader on it.

Cheers,
John


Paolo Amoroso

unread,
Jun 8, 2001, 12:01:33 PM6/8/01
to
On Thu, 7 Jun 2001 21:28:30 GMT, Kent M Pitman <pit...@world.std.com>
wrote:

> Where is this technique discussed? I'd like to peek in at it and compare

This paper might also be relevant:

"The Influence of Browsers on Evaluators or, Continuations to Program Web
Servers"
Christian Queinnec
Proceedings of ICFP '00
SIGPLAN Notices - vol. 35, n. 9, Sep. 2000, page 23

Kent M Pitman

unread,
Jun 8, 2001, 1:32:10 PM6/8/01
to

> Now this whole "my Lisp is the perfect Lisp" thing saddens me a bit.
> I am glad the Scheme community resisted the ARPA pressure to merge
> with CL, and I do hope EuLisp is not still-born, but even then, a
> mere three Lisps..

I don't think anyone thinks our Lisp is the perfect Lisp.

Personally, I don't think Scheme is a Lisp, but I say so mostly to help avoid
Scheme fanatics tinkering in Lisp or vice versa, since I think the two arise
from differing motivations. I think languages that are out for different
purposes will never satisfy each others' users, and ought not try. But I also
think you can't critique a language very usefully if you have not tried to
use it and if you don't have some sense for how it is intended to BE used.

That's not to say some don't go back and forth between, and I don't mean to
say a person can be only in one camp. Just that some people seem people deny
themselves a legitimate view of the other side by letting their prejudices
get in the way.

I'm not sure what to say about EuLisp. I haven't tracked that. But
certainly its name doesn't strike fear in my heart. I do personally
think it's a separate language, perhaps more a dialect of Scheme than
Lisp, but that's just a subjective judgment. I don't think CL is a
rock unto itself. I count gnu emacs lisp as a member of the lisp family,
and it's far from CL compliant.

All of that said, though, I don't think there's any way that CL people are
unwilling to hear criticism. We thrive on it. We share our troubles and
learn from them. Although I consider myself an advocate of CL, I spend a
LOT of time here whining about its nits. But that whining, whether from
me who's used it for a while or from a newbie who's just optimistic trying
it, needs to come from someone who is doing their best at whatever their
level of expertise to "get into it", and not merely "taking a moment to prove
to themselves what they already knew" or "testing out their theory that the
language couldn't work by running an example or two".

I'm speaking completely generally in all of the above remarks. I haven't
followed this particular discussion in detail other than to note there were
some heated exchanges. Please don't take any of my vague references to
this or that kind of person as veiled references to the players here--I'm just
answering your remark in the general sense that it appears to call for.

I think there are communities that suffer from NIH syndrome. I honestly
don't think the CL community does. Someone (Joel Moses, I think) described
Lisp as a big ball of mud, to which you can add more mud without disturbing
the basic design (I've paraphrased a little); other langauges have been
variously described by others using other metaphors that don't always tolerate
an influx of new ideas. (APL, is the canonical example of a diamond, I think
it was, which cannot have other diamonds added to it without breaking.)

> Maybe it is just old age, but in my experience the days before
> standardisation were much more fun, when you wrote a Lisp with some
> neat feature and showed it around, and looked at other peoples'
> Lisps and took their stuff seriously.

I think you misunderstand a couple of things.

First, the particular dialect which is CL was formed out of a desire to not
haggle until doomsday about the primitive functionality. It is a language
whose purpose is less to be "right" and more to be "standard". That doesn't
mean it can't be found to have more optimal ways of doing things, it's that
in order to be changed, you'd have to show the platform was fundamentally
broken.

Second, this same thought was the conclusion of J13 a year or two ago when
it effectively decided to renew the standard rather than to change it.
I don't know anyone who didn't have an armload of things they want changed,
but no one could justify the COST of a change compared to the VALUE
of leaving it as is. No one felt the language was materially unusable and
the general sense was that moving forward, not spinning our wheels on the
same old stuff, was the important thing.

I think if you are fair, and you divide the discussion along the lines of
"old" and "new" layers, you'll find all the same old stuff you may remember
from long ago. I've seen a lot of healthy discussion about anything from
a trivial function like partition-string to regexps to defsystem to xml
parsing to http handlers to you name it. I don't think you see people saying
they have only one way to do things or that they aren't open to new thoughts.
But on the things that are STANDARD, you see them defend the present way
not because it's "right" but because it creates a balanced platform to do this
next round of work from.

I've recently whined about the misdesign of pathnames (the problem of the
"hosted pathname", for example). But you know what? That's fixable by
layering correct semantics atop the present semantics. It's not fatal.
And I think it's better to count the overall system as working exactly
because it offers enough capability to rise above its little details of
misdesign by monotonic addition.

> Oh, I know, some research is still going on, but it seems the gusto
> is gone, and that is not because we have reached the status of
> "perfect language"..

I think the gusto is not gone, but you phrase your remark as a perception
and I'm not going to assert that however it seems to you is not however
it seems to you. I will, however, suggest you are misperceiving the
reality.

(I don't understand what any of this has to do with macro-writing in CL,
but I'll just let that slide. If I care, I'll go read DejaNews. You don't
have to replay the conversation. It's just curious how far a conversation
can drift sometimes...)

Erik Naggum

unread,
Jun 8, 2001, 2:24:59 PM6/8/01
to
* "Biep @ http://www.biep.org/" <repl...@my-web-site.com>

> All I was trying to do is to explain why certain code was more complex
> than average.

How do you measure complexity? How do you know where the average is?

> Now this whole "my Lisp is the perfect Lisp" thing saddens me a bit.

Why? You have displaed a "my view is the perfect view"-attitude to
almost everything else already? Is it because you get counter-arguments
that show that your view is _not_ perfect that it saddens you?

> I am glad the Scheme community resisted the ARPA pressure to merge with
> CL, and I do hope EuLisp is not still-born, but even then, a mere three
> Lisps..

It saddens me to see someone with so little actual knowledge have such
strong opinions.

> Maybe it is just old age, but in my experience the days before
> standardisation were much more fun, when you wrote a Lisp with some neat
> feature and showed it around, and looked at other peoples' Lisps and took
> their stuff seriously.

The rebel nature has always had more fun before laws and regulation,
which, amazingly, a majority of people actuall prefer, took away their
"freedoms". There are always people who can only have "fun" in a society
without set rules, i.e., where they make up their own and can change them
at will. There are people who do not want others to have "fun" at all
and make up so many rules that nobody can do anything unanticipated
without breaking enough to hurt you. Then there are people who grow
tired of making up rules all the time, of ever-changing rules everywhere
they go, of finding that the human capacity for memory is an _enemy_
instead of a good friend in living productively, of living in fear of
their long-range planning turning to an exercise in futility because the
rules change so fast they cannot plan long-range at all. (These people
are not trying to do business in the Norwegian tax "climate", however,
where politicians today are debating whether to withhold a tax break they
promise us ten years into the future back in 1992, because, amazingly, it
will reduce government revenue.) In short, the only people who have more
"fun" in a society without rules are the people who have enough power to
make the rules. If you recall such insignificant political events as the
Magna Carta, which forced the then King of England to behave, or The
Declaration of Independence, which forced the ruling England to withdraw
their power to make rules over people in America, or the Universal
Declaration of Human Rights, which basically sets limits to what the
rule-makers can do to those who lack the power to make their own rules,
so they have to _follow_ rules, you might begin to understand that the
ability to make up rules as you go and to change everything all the time
is not at all appreciated by those who try to follow them. This also
applies to programmers writing software in Lisp, companies basing all or
some of their business plans on such software, or vendors who want to
sell stuff to both of these parties, who consider the lack of agreement
on the rules so hard to live with, but which the rebel nature finds so
endearing because it is anathema to that dreaded anti-rebel concept of
_responsibility_. It is probably a mystery to you, so please feel free
to believe me on faith, but societies, small and large, that have stable
rules have prospered much, much more than societies with unstable rules.
This seems to apply regardless of what the rules are, but bad rules tend
to be unstable, so we are driven towards societies with stable rules.
Globalization forces countries with irrational policies to reevaluate
their rules because people are free to choose the rules they want to
apply to their business and their personal lives. Guess what kind of
people find this so dangerous and fight it so much. Precisely the kind
of people whose main philosophy in life is to be on the rule-making end
of the rules. More reasonable people tend to consider both the maker and
the follower of rules.

> Oh, I know, some research is still going on, but it seems the gusto is
> gone, and that is not because we have reached the status of "perfect
> language".

The point with Common Lisp macros is that you can devise your own
language if you want to. Scheme has successfully been implemented in
Common Lisp, for instance. What was once called "research" is now more
often called 'application programming" because the research has sort of
"trickled down" into the masses. An amazingly amount of AI stuff has
taken this route and is no longer considered "AI" for that reason alone.
_Compilers_ were once a very, very advanced "AI" research project.

I think the evidence of what is going on in the other languages shows us
that we have indeed reached the status of perfect language, but a lot of
rebels of sometimes severely limited intellectual resources are never
going to be satisfied with it, and insist on reinventing everything that
is already in Lisp badly. The little _actually_ new stuff that people do
can also be done in or with Common Lisp. More often than not, however,
the "new" is in standardizing some of the environmental issues. I guess
it was a lot more "fun" before we had standardized environments, right?

I want to build things. That _includes_ languages, but not exclusively.
People who build languages have a very hard time. People who build stuff
that _more_ than just programmers and researchers can use have a slightly
easier time. This has nothing to do with the perfectness of languages.

#:Erik
--
Those who do not know Lisp are doomed to reinvent it.

Erik Naggum

unread,
Jun 8, 2001, 2:49:50 PM6/8/01
to
* "Biep @ http://www.biep.org/" <repl...@my-web-site.com>

> But the time when Interlisp was in a contest with MacLisp, when to almost
> everybody's amazement Scheme(r) brought the Planner/Conniver line back in
> the fold by showing that with lexical scoping Hewitt's actors were
> identical to procedures, that time seems gone, and I think too early.

You are too puzzling a character for me to want to spend any time on, but
just out of curiosity, since you refer to CLtL2 as the reference for
Common Lisp, your attitudes and opinions must predate 1995 and not have
evolved much since, and by the looks of it, you are still mired in the
pre-1990 Lisp world, possibly even pre-1980. Why is that comfortable
for you when the rest of the Lisp world really _has_ moved on so much and
so far? Why are you pining for an irrelevant past?

Or are you trying to prove my point when I say that Scheme is not a Lisp,
that the Lisp that "Scheme is a Lisp" refers to is a really, really
ancient Lisp that has absolutely no relevance outside of history lessons?

> I don't care if a language dies because a successor is objectively
> better, but I do care if that kills parts that are, or may be, better
> than corresponding parts in that successor.

The very idea that anything is "objectively better" is simply ludicrous.

I think you need a fundamental attitude readjustment. Quit being a troll.

#:Erik
--
Travel is a meat thing.

Craig Brozefsky

unread,
Jun 8, 2001, 4:01:41 PM6/8/01
to
Craig Brozefsky <cr...@red-bean.com> writes:

> Kent M Pitman <pit...@world.std.com> writes:
>
> > I may be available to consult on this if someone has a real application
> > that needs this and needs help working out the syntax details... ;-)
> > [Such discussion should go through email, though, not newsgroup.]
>
> Might I suggest the lispweb mailing list as a forum for such
> discussion.
>
> See http://www.red-bean.com/lispweb

To clarify, I intended to suggest that the discussion of scaling lisp
applications could be moved to lispweb where there are many people
interested in the topic, and alot of people with experience in the
topic.

It was in no way intending to suggest that discussion with Kent about
consulting on the topic of scaling lisp web apps should go to that
list.

David Thornley

unread,
Jun 8, 2001, 5:01:49 PM6/8/01
to
In article <9fq3q7$5kp1i$1...@ID-63952.news.dfncis.de>,


>All I was trying to do is to explain why certain code was more complex than
>average.

I have a pet theory as to why some code is more complex than average.

It tries to do more complex things.

The CL macro facility is extremely powerful. It allows you to write
a code generator with a very small amount of overhead. It's like
writing a small piece of a compiler, without all the parser and lexer
stuff (which you don't need here).

This stuff is difficult. I remember the first time I had to write
a program to generate simple source code. I really botched the job,
and wrote and rewrote it before I got the basic idea.

Now, that took a lot of scaffolding. (You try writing something
complicated in IBM 370 assembler without supporting structure.)
In CL, it takes almost no extra structure, and so the bulk of
what you'd normally write is removed, leaving only the core. Since
the task is inherently difficult to do right, this leaves the macro
writer writing, and perhaps struggling with, a few lines of code.
The size of the macro written makes it look like it has to be
easy and simple, whereas it's complicated and can be difficult.

When there's a small language construct that is surprisingly difficult
and error-prone, there's a temptation to think that it's because of
some fault of the language. This is usually true of most computer
languages I've used, but I think it false in this case.

>Now this whole "my Lisp is the perfect Lisp" thing saddens me a bit. I am glad
>the Scheme community resisted the ARPA pressure to merge with CL, and I do hope
>EuLisp is not still-born, but even then, a mere three Lisps..
>

There's lots of things in the world that don't work very well, but which
nobody's come up with a better solution for. Winston Churchill said
"Democracy is the worst form of government, except for all the other
ones." I think this is one of those cases: it isn't perfect, but
I don't have a better idea, and I haven't met anybody who did.

So, if you have an idea for a better way to write macros, or a better
way to teach how to write macros, please tell us. If not, then I
think this is one of those cases of idealism that are just going to
be frustrated.

--
David H. Thornley | If you want my opinion, ask.
da...@thornley.net | If you don't, flee.
http://www.thornley.net/~thornley/david/ | O-

Frank A. Adrian

unread,
Jun 8, 2001, 5:36:58 PM6/8/01
to
"Biep @ http://www.biep.org/" <repl...@my-web-site.com> wrote in message
news:9fq3q7$5kp1i$1...@ID-63952.news.dfncis.de...

> Maybe it is just old age, but in my experience the days before
standardisation
> were much more fun, when you wrote a Lisp with some neat feature and
showed it
> around, and looked at other peoples' Lisps and took their stuff seriously.

So what are you proposing? If you have nothing to show around (and yes,
it's just as easy to build something now as in the old days - maybe easier),
then all you're doing is bitching. Anyone who could show a system for doing
the equivalent of (or more than) the current CL macro system without (what
you perceive as) the cruft would probably be listened to. So get cracking!
Otherwise, be still.

faa


Dorai Sitaram

unread,
Jun 8, 2001, 11:20:52 PM6/8/01
to
In article <sfwk82o...@world.std.com>,

Kent M Pitman <pit...@world.std.com> wrote:
>
>I think the Scheme community is puzzled by the fact that CL doesn't
>have a hygienic macro system and yet doesn't run into all kinds of
>problems as a result. Usually this kind of "surprise" comes from
>momentarily making the mistake of assuming that the conversation can
>usefully proceed by idealizing the differences between the two
>languages as being "only this" and assuming that what keeps the
>conversation focused will not leave out critical information that
>makes the conversation meaningful. It is impossible to have a
>conversation about macros without a conversation on namespaces and
>packages (and "hygiene" is as much about those other two issues as it
>is about macros). Yet they mostly forget to bring them into play when
>looking at our macro system. We in CL rely on the Lisp2ness and on
>the package system to protect us from name conflicts, and in practice,
>it does. To my knowledge, having worked at several Lisp vendors and
>having used CL now about 2 decades years, people who know what they
>are doing reliably do not run into any problems with name collisions
>in CL. The problem just doesn't come up. The ecology works.

It is important to keep in mind that regardless of
where the spirit of exploration takes the Scheme
community, defmacro remains exactly as usable and easy
in a Lisp1 as in a Lisp2. A Lisp1er would use the same
technique to avoid lexical-variable capture as a
Lisp2er would -- when you introduce a lexical variable
in the expansion, use a gensym. If someone gets the
impression that a Lisp1 forces one into considering a
hygienic macro system any more than a Lisp2 does, that
impression is unwarranted.

--d

Brad Knotwell

unread,
Jun 8, 2001, 11:25:37 PM6/8/01
to

Off-topic post alert. . .if you're not interested in load-balancers hit
'n' now.

Tim Moore <mo...@herschel.bricoworks.com> writes:
> Graham does seem to be using real closures. My scaling concerns, as I've
> written in other articles, have to do with requiring sessions to always
> return to the same machine.

As someone pointed out earlier, if you have a reasonably full-featured
load balancer, their approach scales nicely. Insert a load balancer
parcelling initial requests amongst a farm of servers and then turn on
persistence for future requests and you have a robust, simple solution.
FWIW, persistence usually comes in the form of a cookie, an SSL session ID,
or client IP address(es) (NOTE: outside of intranets, the AOL problem makes
using client IP a bad idea).

This does leave the problem of what happens when the persistent server
for XYZ falls over in the middle of a session. AFAIK, I don't know of any
load-balancer that would do anything besides load-balance the client to
a different server.

And all for a few measly $$$ and 4-U (gotta have a redundant pair) of
rackspace.

> Tim

--Brad (they oughta put me in marketing)

Kent M Pitman

unread,
Jun 9, 2001, 12:35:57 AM6/9/01
to
ds...@goldshoe.gte.com (Dorai Sitaram) writes:

> ... A Lisp1er would use the same


> technique to avoid lexical-variable capture as a
> Lisp2er would -- when you introduce a lexical variable
> in the expansion, use a gensym.

Actually, I was more referring to the issue of what variables you
could use free. In Scheme, I find using variables like LIST to be
dicey because I use that as a variable name and it requires me to
know how a macro expands to know if I'm screwing it by using a pretty
variable name. So I think there are some legit concerns in a Lisp1.

> If someone gets the
> impression that a Lisp1 forces one into considering a
> hygienic macro system any more than a Lisp2 does, that
> impression is unwarranted.

It might not be an all-or-none thing, but I think it can't be argued
that the probabilities of collision are higher. Well, ... it can be
argued ... I just don't think it will end successfully. ;-)

Pierre R. Mai

unread,
Jun 9, 2001, 11:24:28 AM6/9/01
to
"Biep @ http://www.biep.org/" <repl...@my-web-site.com> writes:

> "Pierre R. Mai" <pm...@acm.org> wrote in message
> news:87g0ddzv...@orion.bln.pmsf.de...
> > In what way do you feel that writing (serious) macros in CL
> > involves 'a lot of "fighting the system"'?

[...]

> (2) Macros are (or should be) about meaning one thing when you say
> another -- not necessarily about transformations, even though the notions
> come close. (To appreciate the difference, see what C macros can do that
> they shouldn't..) Let me just give a few examples:

Here I'd have to disagree. Macros in Common Lisp _are_ arbitrary
source code transformations, nothing more and nothing less. They are
not mechanisms that are geared to writing syntactic short-hand
notions, they are just a hook into the compiler/interpreter. They are
source-level transformations of the sort you will find in the first
stage of a compiler.

In that way they are all powerful (every kind of transformation that
is computable can be implemented), and with that power come the
corresponding caveats.

Which is why I was surprised by your assertion that writing macros
involves a lot of "fighting the system", which I take to mean that you
have to circumvent _restrictions_ in the system to reach your goals.

If your claim were to be that the macro system itself provides too
little guidance and support to the writer of "simple" syntactical
convenience macros, I'd actually quite possibly agree.

I think there is a place (in a layered standard to ANSI maybe) for a
layer on top of the macro system, that implements something similar to
the R5RS-style or Dylan-style pattern-based macro systems.

But note that those are very different mechanisms with very different
goals and uses to those of defmacro-style "macros".

> There is a subtle but fundamental difference between the notions of 'fresh
> variable' and '(gensym)'. The latter is a kluge to arrive at the former
> (or the right thing to do in other contexts, of course).

It is not a kludge, it is a lower-level tool, a building-block out of
which the higher-level tool will be built.

> There is a difference between 'the list function' and '(list ...)'. CLtL2
> has 'solved' the resulting problem by requiring that no built-in function
> can be redefined, but that is of course a weakness bid.

Of course there is a difference between 'the list function' and '(list
...)'. The former is a function, the latter a form that is a function
call.

What you probably meant to state is that there is a difference between
the list function as described in the ANSI CL standard, and the
function that is invoked when the implementation encounters the form
'(list ...)'. But if (eq 'list 'cl:list) (which is a reader issue),
then there is no such difference, because you are not permitted to
bind it, again according to the standard, as you state (though relying
on a document that never had any standing as a standard, in contrast
to CLTL1 and now the American National Standard X3.226).

Furthermore, as Kent has pointed out the same is true of any other
global function or special variable that is part of foreign code,
since the same implicit contract exists there, too.

And since "problems" only occur when you break that contract, which
requires direct action from you, this is a completely stable
situation. When you override the definition of #'cl:list, you have to
expect the consequences.

> (3) So since the macro writer wants to state "whenever I say this I MEAN
> that", but the system wants to hear "whenever you say this, I should assume
> that you SAID that", macro writing necessarily involves fighting the
> system. It is a lot like legalese: a lawyer is also a guru in bringing a

Not at all. Fighting the system means having to work around
restrictions in the system, in order to achieve the results intended.
The problem you are running up against aren't the fault of the system:

The system states quite clearly that macros are a completely general
source transformation system. But you want something _more_
restricted, in order to preserve you from having to think about
low-level issues. In effect you are complaining that the system gives
you too little guidance, thereby allowing you to do something
different from what you wanted.

BTW I don't think that your description of what the macro writer wants
to is clearly defined. The moment words like "MEAN" etc. crop up in a
definition of what a system should enable, we enter the land of DWIM
it seems to me.

> meaning across in a system that tends to look at texts, but it involves
> non-trivial phrasings, and often a lot more text than one might have
> thought. If a non-guru draws up a legal document, it is likely there are
> loopholes.

Well, again, that isn't fighting the system. When a non-programmer
draws up a specification for a system, it is likely to contain many
loopholes and inexactitudes. That's why we have programmers (and
lawyers), which are capable of navigating the _necessary_ intricacies
of complex systems.

Of course for certain, simpler problems, the lawyer can offer you a
prewritten text, which can be used with a few simple changes out of
the box.[1] Again, for certain "simple" macros, it might be
preferable to use a more restricted mechanism layered on top of
defmacro. Indeed for many macros that people define it is often
better to use inlined functions.

And the nice thing about CL is that it allows the user to design and
implement such mechanisms to his liking, exactly because CL macros are
arbitrary source transformations.

> Does that help? Again, if you are familiar with the system, the
> "macrolese" may come naturally, and even appear obvious, and definitely
> prove exploitable in ways that a "correct" solution would not be -- again
> the comparison with lawyers comes to mind :-)

If you were to refrain from using such words as "correct", and letting
your disdain for the legal system taint your argument, it might be
more persuasive. It is clearly the case that defmacro is a "correct"
solution to the problem of arbitrary source to source transformations.
That you don't want a solution to this problem, but rather to a
slightly different problem, doesn't make defmacro incorrect, it just
means that you are missing a system that is a perfect fit to your
particular problem. And the nice thing is that defmacro gives you the
mechanisms to create that system, which would be impossible if you
didn't have access to that lower-level mechanism.

Regs, Pierre.

Footnotes:
[1] In the legal world it is often still advisable to consult a
lawyer, because non-experts are notoriously bad at evaluating
whether the assumptions underlying the prewritten text apply to
them or not. Luckily this is somewhat simpler in the case of
simple macros.

--
Pierre R. Mai <pm...@acm.org> http://www.pmsf.de/pmai/
The most likely way for the world to be destroyed, most experts agree,
is by accident. That's where we come in; we're computer professionals.
We cause accidents. -- Nathaniel Borenstein

Coby Beck

unread,
Jun 9, 2001, 12:19:53 PM6/9/01
to

"Wade Humeniuk" <hume...@cadvision.com> wrote in message
news:9fo4u3$mon$1...@news3.cadvision.com...
> Quit being a troll.
>

I have not read the thread past this point, but so far completely disagree
that this person is trolling.

I find the discussion interesting and educating. Erik Naggum wrote recently
in another thread (the "aref inline?" one) very correctly about how in the
usenet forum, it "pays off to be imprecise and incorrect in order to produce
the most lucid answers." So I think there is much more to be gained in
this discussion by getting the chips off the shoulder keeping the discussion
technical. Biep has committed no outrage at this point.

Coby

Addendum: My familiarity and skill with macros is such that I can write
them and use them to solve interesting and complex problems in ways that I
find very satisfying but still do not yet fully understand much of what I
see being discussed at times. I like them very much but do not fear hearing
what others dislike, nor hearing criticisms I already disagree with, it
helps me learn.


Coby Beck

unread,
Jun 9, 2001, 12:21:44 PM6/9/01
to
childish crap.

Coby


"Wade Humeniuk" <hume...@cadvision.com> wrote in message

news:9fonl2$u65$1...@news3.cadvision.com...
> I made a mistake :), let me correct,
>
> In the first case
>
> (close biep) ; since it was not cleaned up
> (setf biep (open "ears" :direction :output))


> (write "Quit Being A Troll!" :stream biep)
> (flush-output biep)
> (close biep)
>

> Or with the macro
>
> (with-open-file (biep "ears" :direction :output)


> (write "Quit Being A Troll!" :stream biep)
> (flush-output biep))
>

> But I think I really should have created a new macro like
>
> (with-persons-aural-attention (biep :uri "http://www.biep.org")
> (tell biep "Quit Being A Troll!"))
>
> or
>
> (biep! Quit Being A Troll!)
>
> or
>
> (biep!!!!!!!)
>
> After all thats what macros are for.
>
> Wade
>
>
> "Jochen Schmidt" <j...@dataheaven.de> wrote in message
> news:9fohim$566pj$1...@ID-22205.news.dfncis.de...


> > Wade Humeniuk wrote:
> >
> > > Quit being a troll.
> > >
> > > Or in CL
> > >
> > > (defvar biep (open "ears" :direction :input))
> > > (write "Quit Being A Troll!" :stream biep)
> > > (flush-output biep)
> > > (close biep)
> > >
> > > Or with a CL macro
> > >
> > > (with-open-file (biep "ears" :direction :input)
> > > (write "Quit Being A Troll!" :stream biep)
> > > (flush-output biep))
> >

> > Nice said ;-)
> > But Biep will hear more if we use :output as :direction.
> > The standpoint taken in CLs notion of "direction" is the Lisp System not
> > the file. So "input" means "The Lisp System gets input from a file"
> > and "output" means "The Lisp System outputs to a file"
> >
> > Regards,
> > Jochen
> >
>
>
>


Andy Freeman

unread,
Jun 9, 2001, 1:25:34 PM6/9/01
to
> Graham's session-state-as-closures technique is a cool hack, but I wonder
> how scalable it is. It forces a remote user to be served by the same
> Lisp image (on the same machine, obviously) on every transaction. While
> it's desirable to do that for caching reasons, etc., it's not great to
> rely on that mode of operation: load balancing, hardware failure,
> and network problems/instability, to name a few factors, all conspire
> against it.

I think that load balancing is often required because of unnecessary
mistakes.

If you're serving static pages, the current record is at least 3000/sec
on an x86 box (http://uwsg.iu.edu/hypermail/linux/kernel/0104.2/1191.html).
(Yes, there are multiple NICs.) Of course, if you're only serving static
pages, you probably don't care about sessions, but I mention that rate
because it suggests that a single webserver might be able to serve a lot
more traffic than many people expect.

So, how many dynamic pages can a single webserver generate per second?
Naturally, the answer depends on what it takes to generate the page,
but Rushing's Medusa put out did 200 messages/second (for egroups)
from a 400MHz PII. (Medusa is a single-threaded python app. The
execution model looks a lot like co-routines. The code is available
at www.nightmare.com.) That code is basically just a clever front
end for select, so it's the same for any network service.

Those are old numbers - there are faster ways to handle select in
more modern linux/bsd/solaris kernels, and there are faster processors.
In addition, while the python interpreter is single-threaded, other
webservers can make use of multiprocessors. In short, it shouldn't
be too hard to generate/serve 1000 pages/second from a comparable
system running on a high-end, but commodity, 4 processor x86 box. (I
suspect that network i/o will be the bottleneck - we're approaching
low-end PCI limits.) And, how many sites need that kind of capacity
but can't afford to buy something even more capable? (100/sec is
360k/hour, or easily a million/day.)

Ah, but what each page requires 100 joins (or disk i/o)? In that case
the webserver can front-end compute servers. I suspect that a single
webserver can easily front-end a fairly hefty oracle server, say a 16
processor sun box. Using a webserver as a front-end uses connection
bandwidth&processing, but we still should be able to generate 500
pages/sec.

Will some people need even more capacity? Yes, but not many.

-andy

Thomas F. Burdick

unread,
Jun 9, 2001, 3:04:00 PM6/9/01
to

> There is a subtle but fundamental difference between the notions of 'fresh
> variable' and '(gensym)'. The latter is a kluge to arrive at the former
> (or the right thing to do in other contexts, of course).

Yes there is a difference between a call to `gensym' and the notion of
a "fresh variable" -- as Pierre pointed out, `gensym' is a low-level
tool. If you don't like writing your macros at that low of a level,
don't. Write yourself some tools and never type the sequence "gensym"
again. I actually type "gensym" maybe 1 in 500 times I use an
uninterned symbol in a macro. Once in a while I need to call `gensym'
directly, the rest of the time, I use a little utility that walks the
code my macro returns and replaces symbols looking like =foo with
uninterned symbols. It took a couple minutes to write. But I'd be
really annoyed if I didn't have access to the low-level `gensym' on
those occasions when I need it.

Kent M Pitman

unread,
Jun 9, 2001, 4:01:13 PM6/9/01
to

> There is a subtle but fundamental difference between the notions of 'fresh
> variable' and '(gensym)'. The latter is a kluge to arrive at the former
> (or the right thing to do in other contexts, of course).

Actually, Lisp also has GENTEMP, but experience showed that it was
never adequate. Peter Norvig and I, when putting together a coding
style presentation years back (parts of which I think is findable
somewhere by web searches) both noted and agreed that almost all uses
of GENTEMP are semantically flawed. The problem with GENTEMP (which
might not appear in C because of lack of print/read consistency
leading to ephemeral environments that perhaps don't expose the
problem) is that you can't close over the space of things you wish to
have something be "fresh from". That is, I can say "give me a fresh
variable" and you can do the same, but later we can merge our two
environments and find that we each thought a certain variable was free
and used it but that in the new, merged environment, it is not free.
You might say the probability was low that the two would be used
together, but it sometimes happened that people would proclaim such
uses SPECIAL, thinking after all that they owned the variable, and
then they would suddenly start failing to work in other people's
closures upon reload of stored code that had formerly been thought to
be a lexical closure.

> There is a difference between 'the list function' and '(list ...)'. CLtL2
> has 'solved' the resulting problem by requiring that no built-in function
> can be redefined, but that is of course a weakness bid.

I don't see what this has to do with macros or weakness of anything.

> Lisp has fought hard to get rid of (default) dynamic scoping, but in macros
> this is still the default. If your macro references a variable X, it just
> grabs whatever X happens to be available at the location where the macro is
> used.

Properly styled code therefore does not do this except where it can see the
entire space of usages and so prove it is safe. This does not turn out to be
a weakness in experienced practice. It is syntactically straightforward and
convenient for macro writers to write solid code in the face of this
deficiency.

> Like dynamic scoping for lambdas, people who have gotten used to
> that tend to like it, and indeed can proffer a whole battery of situations
> where this 'feature' can be exploited -- again the guru phenomenon.
> Normally you mean 'this variable' but have to write 'X', again not quite
> the same thing. As with functions, lexical scoping (referential
> transparency) should be the default, with an option for dynamic scoping.

This is an assertion without foundation.

Certainly I absolutely agree with you that it is possible to take the
position you are taking. Nor do I deny that many do. However, there are
other consistent world models that compete with this one and that are used
as well.

There is also a price in terms of "complexity elsewhere" for the
approach you suggest. Nothing prevents you from using macro
"painting" like Eugene Kohlbecker's macro systems in Scheme use, but
if you try it you will find that it doesn't work as well in CL as it
does in Scheme because a lot more things in Lisp than Scheme rely on
identity, and Kohlbecker's model paints not just program but data,
which injures some CL data structures that Scheme has no way of
talking about.

Further, there is a definite cost in terms of how hard it is to do things
that don't fit neatly into a simple substitution model. Doing "hard
computation" on a macro form in Scheme/Dylan is very much harder than in Lisp.
Macro writers have to think about these costs, too, which is why many of them
prefer the Lisp model.

If one was going to do a hygienic macro system for Lisp, the one I'd pursue
would be Alan Bawden (I think it was)'s "Syntactic Closures". (I had a similar
theory worked out but he beat me to publication. Even so, I liked his approach
much better than Gene's painting system and was sad to see the painting
system win out.)

> (3) So since the macro writer wants to state "whenever I say this I MEAN
> that", but the system wants to hear "whenever you say this, I should assume
> that you SAID that", macro writing necessarily involves fighting the
> system.

So do ALL things that you choose not to like, whether or not they work.
No serious macro writer I know feels like he's fighting the system.
I very much enjoy writing macros. I find their use simplifies my life
and I enjoy the process of making them. I look forward to it.

> It is a lot like legalese: a lawyer is also a guru in bringing a

> meaning across in a system that tends to look at texts, but it involves
> non-trivial phrasings, and often a lot more text than one might have
> thought. If a non-guru draws up a legal document, it is likely there are
> loopholes.

That same programmer is often going to write bad programs as
one-shots, without the macro system, too.

But I have often said that the quality of being a programmer is being
a list-maker. You are writing a full flowchart through a space, not just
a single path. There is programming for the dabbler, where you just try
something and hope it works the one time you try it, and pat yourself on the
back. But that's a different art form entirely. Programming for serious
programmers is about having industrial strength operators that stand up
under contract scrutiny. And I daresay CL unhygienic macros will stand
up to Scheme hygienic ones just fine. And probably both will beat out
C macros by leaps and bounds.

> Does that help? Again, if you are familiar with the system, the
> "macrolese" may come naturally,

A skilled craftsman always knows his tools. Would you come critique a
carpenter's shop on the basis of how hard it is to use the 30 kinds of saws
when you can't see what the subtle differences are? Because that guy is
surely just glad to have the right tool for each job as he comes up on it.
I'm sure he doesn't see it as woodlese.

> and even appear obvious, and definitely
> prove exploitable in ways that a "correct" solution would not be -- again
> the comparison with lawyers comes to mind :-)

As I went to write "There is no canonical out-of-context notion of correct."
I seem to recall someone (perhaps Erik) already making that point.

Andy Freeman

unread,
Jun 9, 2001, 5:40:42 PM6/9/01
to
> If you're serving static pages, the current record is at least 3000/sec
> on an x86 box (http://uwsg.iu.edu/hypermail/linux/kernel/0104.2/1191.html).

For more details and fewer errors, see:
http://www.spec.org/osg/web99/results/res2001q2/web99-20010319-00100.html

In particular, spec99 has both dynamic and static pages. In addition,
the 3000 number is NOT pages served, but simultaneous connections
that are getting adequate service. It's doing over 9000 ops/second.

For more information about the workload, see
http://www.spec.org/osg/web99/

The underlying hardware is a 2 processor 1GHz PIII with only 4GB,
but it's only the fastest on "cheap" hardware.

The x86 champ is 8000 connections at 22.7k ops/second from an 8
processor 700MHz PIII-Xeon (and 32GB).

There are even faster results from a 12 processor SUNfire and a
12 processor IBM eServer (RS64). (I didn't see any 3090 followon
results.)

If anything, that's more argument for the feasibility of a single
webserver.

Yes, a single webserver is a single point of failure. Then again,
if your servers aren't on non-adjacent plates (servers on different
sides of the San Andreas fault isn't good enough), you're already
subject to single cause failures. It's hard to do redundancy right,
to get a system that is actually more reliable than its components,
and in many cases, minimizing time to repair/recovery is more important.

-andy

Wade Humeniuk

unread,
Jun 9, 2001, 7:07:35 PM6/9/01
to

"Coby Beck" <cb...@mercury.bc.ca> wrote in message
news:J0sU6.424799$o9.67...@typhoon.tampabay.rr.com...

>
> "Wade Humeniuk" <hume...@cadvision.com> wrote in message
> news:9fo4u3$mon$1...@news3.cadvision.com...
> > Quit being a troll.
> >
>
> I have not read the thread past this point, but so far completely disagree
> that this person is trolling.
>
> I find the discussion interesting and educating. Erik Naggum wrote
recently

You like it that Biep is starting to insult Erik and in an attempt to get
him going?

He bashes the current macro system without having no replacement. Then he
says he is not bashing the current system. Then insists that Scheme might
be on the road onto a better one. Then he starts insulting Eirk's
intelligence. Provoking Erik, for me, says that he is a scheming troll.
Biep knows better.

Wade


Tim Moore

unread,
Jun 9, 2001, 7:16:02 PM6/9/01
to
These are interesting stats, and they do show that a single server may be
a viable option for many web applications. Then you can use closures to
your heart's content. I don't like to talk about my employer much in this
forum, and our traffic numbers are a closely guarded secret anyway, but...
there ain't no way we would run the front end of the site on a single
server. I'll leave it at that.

Tim

Daniel Barlow

unread,
Jun 9, 2001, 9:17:45 PM6/9/01
to
Kent M Pitman <pit...@world.std.com> writes:

> Actually, Lisp also has GENTEMP, but experience showed that it was
> never adequate. Peter Norvig and I, when putting together a coding
> style presentation years back (parts of which I think is findable
> somewhere by web searches) both noted and agreed that almost all uses

Would that have been the ``Tutorial on Good Lisp Programming Style''
at the Lisp Users and Vendors Conference, August 10, 1993

If that's the one you're referring to, people can get the slides from
Peter Norvig's site at <url:http://www.norvig.com/luv-slides.ps>. It
refers to use of GENTEMP as one of a list of red flags: "... you do
not automatically have a problem in your code, but you should still
proceed cautiously". A footnote refers to GENTEMP specifically as
having "no known good uses"


-dan

--

http://ww.telent.net/cliki/ - Link farm for free CL-on-Unix resources

Kent M Pitman

unread,
Jun 9, 2001, 9:55:37 PM6/9/01
to
Daniel Barlow <d...@telent.net> writes:

Yeah, that sounds about right. ;-)

Marc Spitzer

unread,
Jun 10, 2001, 2:09:16 AM6/10/01
to

From what I have read of Erik's posts here, insulting his intelligence is
stupid. If you read what he writes there is no way a person of average
or better inteligence could think he is less then very smart and educated.
You may not agree with it but he presents a very good argument.

marc

>
>

f_o_o_

unread,
Jun 10, 2001, 6:46:15 AM6/10/01
to
"Wade Humeniuk" <hume...@cadvision.com> wrote in message news:<9fua6j$sjo$1...@news3.cadvision.com>...

> You like it that Biep is starting to insult Erik and in an attempt to get
> him going?
What a pile of crap!
In <32008704...@naggum.net> it was E that was provoking -
strange, having such an uncalled for attack with all that fuss over
the "fighting the system" phrase, just because E had previous judgement
over B - when he accuses most people of doing this to him.

> He bashes the current macro system without having no replacement. Then he

He bashed nothing - he had it in a comment, in double quotes and later admitted
he doesn't know macros too well.

> says he is not bashing the current system. Then insists that Scheme might
> be on the road onto a better one.

E was the one who brought hygienic macros into the thread.

> Then he starts insulting Eirk's
> intelligence.

How? Look at that post - E just came out of nowhere in a clear attack because
of some personal past issues with B, and in what seemed to be an attempt
to AVOID a fight, B did not reply for his posts. Anyway, insulting E's
intelligence seems to be a very easy thing to do.

> Provoking Erik, for me, says that he is a scheming troll.

Oh god...if you just pull your tongue out of E's ass for a couple of minutes
you might think better. It's so fucking annoying to see people happily
shove their tongues up there just because he seem to know more than
you do. Like that magic flute he uses his infinite cheap speeches
and bad cliches to drag you morons behind him. The damage he
does for Lisp is far beyond his technical "contributions"
only if for this killing of anyone that dares saying
something bad on CL - other people are open to hearing
about good things from others while E is so focused around
he's speeches about smart people not locking on a single way of thinking
that he is completely unaware of anything and anyone except for himself.
Just Get a Fucking Life.

> Biep knows better.
>
> Wade

Dorai Sitaram

unread,
Jun 10, 2001, 9:01:37 AM6/10/01
to
In article <sfwiti6...@world.std.com>,

Kent M Pitman <pit...@world.std.com> wrote:

The fallacy in your argumentation is you assume that in
a selected time range (say, when he's writing the
expansion text of a macro) a Lisp1er forgets he's using
a Lisp1 and thinks he is using a Lisp2. This is an
absurd assumption -- a Lisp1er is already fully
cognizant and acceptive of the idea that he's using a
Lisp1. It, however, makes sense that a Lisp2er using a
Lisp1 might have a problem like this. In essence, you
are saying that a Lisp2er would run into problems
working in a Lisp1 that he wouldn't in a Lisp2. That
is indeed a legit thing to say but perhaps should go
without saying.

--d

Kent M Pitman

unread,
Jun 10, 2001, 9:42:19 AM6/10/01
to
ds...@goldshoe.gte.com (Dorai Sitaram) writes:

> The fallacy in your argumentation is you assume that in
> a selected time range (say, when he's writing the
> expansion text of a macro) a Lisp1er forgets he's using
> a Lisp1 and thinks he is using a Lisp2. This is an
> absurd assumption -- a Lisp1er is already fully
> cognizant and acceptive of the idea that he's using a
> Lisp1. It, however, makes sense that a Lisp2er using a
> Lisp1 might have a problem like this. In essence, you
> are saying that a Lisp2er would run into problems
> working in a Lisp1 that he wouldn't in a Lisp2. That
> is indeed a legit thing to say but perhaps should go
> without saying.

Well, I've spent serious time coding Scheme for work at some places
I've worked, so I tink I'm not just making it up from theory. The
problem is that if someone else gives you a macro whose implementation
you don't know, you cannot know whether any variables you bind will
cause that macro not to work.

In CL, the common rule for macros is to never use a variable free,
only functions. And additionally, if the macro has as its home
package the package you're in, you must know its implementation or
cannot bind any functions either; if it's a "foreign" macro, you can
bind functions because the package system will protect you.

In Scheme, there is no package system protecting you, nor is there a
separation of functions and values, so you are at risk every time you
bind a variable unless you know the expansion of every lexically contained
macro or unless you have a macro system with hygiene.

I don't see how this is fallacious. What is the statement I have made that
is factually incorrect?

Wade Humeniuk

unread,
Jun 10, 2001, 10:09:23 AM6/10/01
to
Like your comments are helping. Quit being a troll.

Wade


It is loading more messages.
0 new messages