From: Mike
Subject: Macro expansion newbie question
Date: 
Message-ID: <1109949467.372490.29740@g14g2000cwa.googlegroups.com>
Sorry this is so beginner.

"On Lisp" chapter 7 starts off with (defmacro nil! (var) (list 'setq
var nil)) which seems easy enough.

(nil! x) => {unspecified}

Note that I denote => to mean "finally evaluates to."  So if you were
to type (nil! x) at the top level, you get the same effect as if you
typed (setq x nil), being that x is now nil (which returns some
unspecified value).

What I don't understand is the precise intermediate steps of
macroexpansion.  Let me make a new example and ask questions about it:

(defmacro foo (x y) (list 'cons x y))

Ok, I think we're pretty sure that

(foo (+ 1 2) (+ 3 4)) => (3 . 7)

but, when do the additions actually occur?  Does it go like (mixing
macro expansion and the final eval):

(foo (+ 1 2) (+ 3 4)) -> (list 'cons (+ 1 2) (+ 3 4)) -> (cons (+ 1 2)
(+ 3 4)) -> (3 . 7)

OR

(foo (+ 1 2) (+ 3 4)) -> (list 'cons (+ 1 2) (+ 3 4)) -> (cons 3 7) ->
(3 . 7)

???

I've been thinking about macros like they're functions whose arguments
aren't evaluated, which return an s-expression that will then get
evaluated to obtain the result.  If this is the case, then I'm thinking
that the latter is correct.  But this seems counter to what I've read
about how macros can disassemble their arguments.

Maybe neither of these are correct.

Is it:

(foo (+ 1 2) (+ 3 4)) -> (list 'cons '(+ 1 2) '(+ 3 4)) -> (cons (+ 1
2) (+ 3 4)) -> (3 . 7)

???

Thanks in advance for any insight.

Mike

P.S.  Sorry again about the newbism, and also if I'm putting any
Scheme-isms in my notation or analysis (I really only have experience
with Scheme).

From: Tayssir John Gabbour
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <1109951773.014861.287540@z14g2000cwz.googlegroups.com>
Mike wrote:
> I've been thinking about macros like they're functions whose
> arguments aren't evaluated, which return an s-expression that will
> then get evaluated to obtain the result.  If this is the case, then
> I'm thinking that the latter is correct.  But this seems counter to
> what I've read about how macros can disassemble their arguments.

Especially since you mentioned knowing Scheme, I think you'd really
like this talk:
http://lisp.tech.coop/lisp-user-meeting-amsterdam-april-2004#macros-and-codewalkers

In particular, Ernst's slides:
http://www.pentaside.org/paper/Macros-and-code-walkers2-waning.ppt

Slide 3 says:
* Macros are replaced by their expansion (expansion time)
* The original call evaporates
* After expansion, their code may be evaluated (evaluation time)



Incidentally, it was interesting how Christian Queinnec put it: macros
transform sexp -> sexp. Not code -> code... One day, I think I'll
appreciate that more than I do now. ;)


Tayss
From: Dave Roberts
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <m3psyfulh4.fsf@linux.droberts.com>
"Tayssir John Gabbour" <···········@yahoo.com> writes:

> Incidentally, it was interesting how Christian Queinnec put it: macros
> transform sexp -> sexp. Not code -> code... One day, I think I'll
> appreciate that more than I do now. ;)

I had this demonstrated to me the other day in a way that really stuck
with me. I don't have the code handy, or I'd paste it in here, but
basically the other day somebody on IRC #lisp suggested I define one
macro in terms of another where the outer macro actually used
macroexpand to get ahold of the code as data and then manipulate it
further. Basically, something akin to:

(defmacro foo (param1 param2)
        (let ((expansion (macroexpand-1 `(bar ,param1 ,param2))))
                `( .... code that uses representation of expansion ...)))

My eyes were really opened. The idea of calling macroexpand in
anything other than a diagnostic manner at the REPL had totally passed
me by.

So, this means you can use macroexpand to operate on data structures
that will never be turned into code.

Like so much of Lisp, I stood back and just said, "Wow." ;-)

-- 
Dave Roberts
dave -remove- AT findinglisp DoT com
http://www.findinglisp.com/
From: Peter Lewerin
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <b72f3640.0503050745.256c2ced@posting.google.com>
Dave Roberts <···········@remove-findinglisp.com> wrote

> My eyes were really opened. The idea of calling macroexpand in
> anything other than a diagnostic manner at the REPL had totally passed
> me by.

In my first implementation of the 99 bottles program (see thread
"Wanted: Magic Lisp snippets") I used MACROEXPAND-1 to pre-expand and
(primarily) to use the caller's environment to have the counter
variable available.  I ended up not using that method because it
didn't really make sense in that context, but it was still nifty.

> Like so much of Lisp, I stood back and just said, "Wow." ;-)

It really should be called Gasp instead of Lisp, because that's how
you sound when you use it.
From: Joe Marshall
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <ekev4az8.fsf@ccs.neu.edu>
"Mike" <······@gmail.com> writes:

> I've been thinking about macros like they're functions whose arguments
> aren't evaluated, which return an s-expression that will then get
> evaluated to obtain the result.  

Those would be `FEXPRS' (an old term).

The problem with thinking about it in this way (other than the fact
that it isn't correct) is that you can't compile anything.  If I write

(defun foo (f)
  (funcall f (+ 2 3) (* 4 5)))

How can I compile this without knowing whether the passed in function
F should be given the numeric values 5 and 20 or list values '(+ 2 3)
'(* 4 5)?


Macros work by extending the compiler (and, for uniformity, the
interpreter) to perform the re-write operation just prior to the point
where the compiler begins its code analysis.  So when the compiler (or
interpreter) is walking your code and finds this list:

   (foo (+ 1 2) (+ 3 4))

it immediately invokes FOO (that is, the function that implements the
expansion for the macro FOO).  That function returns a different list:

   (cons (+ 1 2) (+ 3 4))

And the compiler compiles *this* instead.
From: Frank Buss
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <d09uv3$st4$1@newsreader2.netcologne.de>
"Mike" <······@gmail.com> wrote:

> Maybe neither of these are correct.
> 
> Is it:
> 
> (foo (+ 1 2) (+ 3 4)) -> (list 'cons '(+ 1 2) '(+ 3 4)) -> (cons (+ 1
> 2) (+ 3 4)) -> (3 . 7)

yes, that's right. It is written somewhere in the Hyperspec, but you can 
test it in the REPL:

(macroexpand '(foo (+ 1 2) (+ 3 4))) -> (CONS (+ 1 2) (+ 3 4))

Macroparameters are not evaluated before passing to macros, but the 
commands within a macro are evaluated, so the "list" creates a new list 
with the original parameters, which in turn is evaluated.

-- 
Frank Bu�, ··@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
From: Mike
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <1109951743.334033.279950@z14g2000cwz.googlegroups.com>
Thanks!

(I don't have a CL environment right now...I appreciate your insight!)

Mike
From: Albert Reiner
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <vw8oedz4ecz.fsf@berry.phys.ntnu.no>
["Mike" <······@gmail.com>, 4 Mar 2005 07:17:47 -0800]:
> What I don't understand is the precise intermediate steps of
> macroexpansion.  Let me make a new example and ask questions about it:
> 
> (defmacro foo (x y) (list 'cons x y))
> 
> Ok, I think we're pretty sure that
> 
> (foo (+ 1 2) (+ 3 4)) => (3 . 7)
> 
> but, when do the additions actually occur?

Just ask Lisp itself:

,----
| CL-USER> (defmacro foo (x y) (list 'cons x y))
| FOO
| CL-USER> (macroexpand-1 '(foo (+ 1 2) (+ 3 4)))
| (CONS (+ 1 2) (+ 3 4))
| T
| CL-USER> (CONS (+ 1 2) (+ 3 4))
| (3 . 7)
`----

HTH,

Albert.
From: Mike
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <1109951809.436216.51530@f14g2000cwb.googlegroups.com>
It does, thanks.  I don't have a CL installed anywhere...I guess that
would have saved a post, but I needed the answer quickly.

Again, thanks for the answer, sorry to bug people.

Mike
From: Tayssir John Gabbour
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <1109952177.154677.261920@o13g2000cwo.googlegroups.com>
Mike wrote:
> It does, thanks.  I don't have a CL installed anywhere...I guess that
> would have saved a post, but I needed the answer quickly.
>
> Again, thanks for the answer, sorry to bug people.

You don't need no steenkin' rich client. Just telnet + internet.
http://www.lisperati.com/casting.html

Tayss
From: Mike
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <1109953168.736031.141240@g14g2000cwa.googlegroups.com>
How extraordinarily useful.

Thanks!!!
From: Barry Margolin
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <barmar-2F739E.21374104032005@comcast.dca.giganews.com>
In article <························@g14g2000cwa.googlegroups.com>,
 "Mike" <······@gmail.com> wrote:

> How extraordinarily useful.

Hey googliot, could you *please* include some context in your replies?  
Don't use the Reply button, I think there's something like an options 
menu that includes an option to quote the message your replying to, like 
real newsreaders do.  Despite the way Google shows it to you, this is 
*not* a web forum.

-- 
Barry Margolin, ······@alum.mit.edu
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***
From: Mike
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <1110003332.921872.37140@g14g2000cwa.googlegroups.com>
Goodness.  I thought every decent USENET news reader since 1993 gave
the user a threaded reading mode, so you could easily see the parent
post.

Googliot indeed.  I *used* to be a Smug Trn Weenie.

Barry Margolin wrote:
> In article <························@g14g2000cwa.googlegroups.com>,
>  "Mike" <······@gmail.com> wrote:
>
> > How extraordinarily useful.
>
> Hey googliot, could you *please* include some context in your
replies?
> Don't use the Reply button, I think there's something like an options

> menu that includes an option to quote the message your replying to,
like
> real newsreaders do.  Despite the way Google shows it to you, this is

> *not* a web forum.
>
> --
> Barry Margolin, ······@alum.mit.edu
> Arlington, MA
> *** PLEASE post questions in newsgroups, not directly to me ***
From: Barry Margolin
Subject: Threaded news-reading (Re: Macro expansion newbie question)
Date: 
Message-ID: <barmar-772097.11231105032005@comcast.dca.giganews.com>
In article <·······················@g14g2000cwa.googlegroups.com>,
 "Mike" <······@gmail.com> wrote:

> Goodness.  I thought every decent USENET news reader since 1993 gave
> the user a threaded reading mode, so you could easily see the parent
> post.

MT-Newswatcher keeps track of threads, but only displays the unread 
messages in its menu.  To see an older parent, you have to either use 
the "Open All References" command (which brings up the entire chain back 
to the beginning of the thread), or click on the message ID in the 
In-Reply-To header.

But it's a pain to always have to do an extra step every time a Google 
user posts.  Quoting relevant sections of the message you're responding 
to is a long-standing Usenet tradition, which is compatible with every 
newsreader out there.

-- 
Barry Margolin, ······@alum.mit.edu
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***
From: Svein Ove Aas
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <d0d4qb$10b$1@services.kq.no>
Mike wrote:

> Goodness.  I thought every decent USENET news reader since 1993 gave
> the user a threaded reading mode, so you could easily see the parent
> post.
> 
> Googliot indeed.  I *used* to be a Smug Trn Weenie.
> 
Top-posting? Hmm.

Yes, I suppose they do, but sometimes I read Usenet in non-threaded mode
(like now), and one client I used to use doesn't provide a threaded mode at
all.

Besides, even with perfect propagation and threading, I'd have to switch
messages to figure out the context. I'm far more likely to press 'next
unread' instead.
From: Raffael Cavallaro
Subject: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <raffaelcavallaro-87FA79.01172706032005@comcast.dca.giganews.com>
In article <·······················@g14g2000cwa.googlegroups.com>,
 "Mike" <······@gmail.com> top posted:

> Goodness.  I thought every decent USENET news reader since 1993 gave
> the user a threaded reading mode, so you could easily see the parent
> post.
> 
> Googliot indeed.  I *used* to be a Smug Trn Weenie.
> 
> Barry Margolin wrote:
> > In article <························@g14g2000cwa.googlegroups.com>,
> >  "Mike" <······@gmail.com> wrote:
> >
> > > How extraordinarily useful.
> >
> > Hey googliot, could you *please* include some context in your
> replies?
> > Don't use the Reply button, I think there's something like an options
> 
> > menu that includes an option to quote the message your replying to,
> like
> > real newsreaders do.  Despite the way Google shows it to you, this is
> 
> > *not* a web forum.

A: Because it messes up the order in which people normally read text. 
See RFC 1855 at <http://www.faqs.org/rfcs/rfc1855.html>

Q: Why is top-posting such a bad thing?

A: Top-posting.

Q: What is the most annoying thing on Usenet newsgroups?
From: Barry Margolin
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <barmar-2FDC9B.08594206032005@comcast.dca.giganews.com>
In article 
<······································@comcast.dca.giganews.com>,
 Raffael Cavallaro 
 <················@pas-d'espam-s'il-vous-plait-dot-mac.com> wrote:

> A: Top-posting.
> 
> Q: What is the most annoying thing on Usenet newsgroups?

Actually, ever since the new Google Groups, it's move to 2nd place.

-- 
Barry Margolin, ······@alum.mit.edu
Arlington, MA
*** PLEASE post questions in newsgroups, not directly to me ***
From: John Thingstad
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <opsm9nfn06pqzri1@mjolner.upc.no>
On Sun, 06 Mar 2005 08:59:42 -0500, Barry Margolin <······@alum.mit.edu>  
wrote:

> In article
> <······································@comcast.dca.giganews.com>,
>  Raffael Cavallaro
>  <················@pas-d'espam-s'il-vous-plait-dot-mac.com> wrote:
>
>> A: Top-posting.
>>
>> Q: What is the most annoying thing on Usenet newsgroups?
>
> Actually, ever since the new Google Groups, it's move to 2nd place.
>

Now super long subject lines are a real pain.

-- 
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/
From: ·····@newwebsite.com
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <1112109860.503942.241310@z14g2000cwz.googlegroups.com>
>
> A: Because it messes up the order in which people normally read text.

> See RFC 1855 at <http://www.faqs.org/rfcs/rfc1855.html>
>
> Q: Why is top-posting such a bad thing?
>
> A: Top-posting.
>
> Q: What is the most annoying thing on Usenet newsgroups?

I didn't realize that in a conversion every time somebody wanted to
comment what the previous person said had to be repeated first. It is
not the way people normally converse. A newsgroup is supposed to be
more like a conversation not the written word.

If there are 20 replies to a message I don't need to read the question
every time before seeing the new posts. I have already read the
question. I know what the question is. I just need to see the new
posts. Having read the questions over again and scroll down to see the
new post is very irritating.
From: Tobias C. Rittweiler
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <1112111326.404974.274460@g14g2000cwa.googlegroups.com>
····@newwebsite.com wrote:
> >
> > A: Because it messes up the order in which people normally
> >    read text.
>
> > See RFC 1855 at <http://www.faqs.org/rfcs/rfc1855.html>
> >
> > Q: Why is top-posting such a bad thing?
> >
> > A: Top-posting.
> >
> > Q: What is the most annoying thing on Usenet newsgroups?
>
> I didn't realize that in a conversion every time somebody wanted to
> comment what the previous person said had to be repeated first. It is
> not the way people normally converse. A newsgroup is supposed to be
> more like a conversation not the written word.

It's not mere repetition, it's estabilishing context. You do the very
same in verbal conversation, just by different means ("Do you remember
your question of last week? You asked why good quoting style is
essential to a fruitful discussion in Internet media, and I finally
came to the conclusion that ...")

In Usenet and eMails, we mostly don't paraphrase but cite what our
interlocutor said, because a) we can easily access what /exactly/ he
said and don't have to use our memory (which tend to be rather vague),
and because b) common quotation convention allows us to mark quoted
paragraphs specially to enhance the readability.
From: Thomas A. Russ
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <ymik6nqxm28.fsf@sevak.isi.edu>
·····@newwebsite.com writes:

> If there are 20 replies to a message I don't need to read the question
> every time before seeing the new posts. I have already read the
> question. I know what the question is. I just need to see the new
> posts. Having read the questions over again and scroll down to see the
> new post is very irritating.

But that only happens if people don't trim the posts to which they are
responding.  Normally one would want to distill the quoted text to
that which provides the context for the comment and omit the irrelevant
details.

With larger commentary, interspersing helps, rather than making the
reader figure out which part of the reply corresponds to which part of
the original.


-- 
Thomas A. Russ,  USC/Information Sciences Institute
From: Marcin 'Qrczak' Kowalczyk
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <87k6nq8ms2.fsf@qrnik.zagroda>
·····@newwebsite.com writes:

> If there are 20 replies to a message I don't need to read the question
> every time before seeing the new posts. I have already read the
> question. I know what the question is. I just need to see the new
> posts. Having read the questions over again and scroll down to see the
> new post is very irritating.

If you have to scroll down, it means that the poster did not trim the
citation enough. It should not repeat the whole conversation, but just
enough to recall the context.

-- 
   __("<         Marcin Kowalczyk
   \__/       ······@knm.org.pl
    ^^     http://qrnik.knm.org.pl/~qrczak/
From: Tim X
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <87oecx1ws9.fsf@tiger.rapttech.com.au>
Marcin 'Qrczak' Kowalczyk <······@knm.org.pl> writes:


> ·····@newwebsite.com writes:
>
>> If there are 20 replies to a message I don't need to read the question
>> every time before seeing the new posts. I have already read the
>> question. I know what the question is. I just need to see the new
>> posts. Having read the questions over again and scroll down to see the
>> new post is very irritating.
>
> If you have to scroll down, it means that the poster did not trim the
> citation enough. It should not repeat the whole conversation, but just
> enough to recall the context.

While I tend to "bottom post' because that is the convention, I
personally dislike it because as a blind programmer who uses text to
speech, hearing the same info repeated numerous times is extremely
annoying and makes things very slow. Therefore, I agree totally with
the importance of removing anything in the cited text which is not
relevant to the point you are making. It is important to acknowledge
differences in user perspectives and I mention this to highlight the
fact not everyone accessing a group has the luxury of being able to
quickly and easily scroll to the new content.

Tim
-- 
Tim Cross
The e-mail address on this message is FALSE (obviously!). My real e-mail is
to a company in Australia called rapttech and my login is tcross - if you 
really need to send mail, you should be able to work it out!
From: Michael Ash
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <1112430158.321194@nfs-db1.segnet.com>
Tim X <····@spamto.devnul.com> wrote:
> 
> While I tend to "bottom post' because that is the convention, I
> personally dislike it because as a blind programmer who uses text to
> speech, hearing the same info repeated numerous times is extremely
> annoying and makes things very slow.

A great many newsreaders are capable of marking different levels of 
quoting with different colors. Surely yours could be modified to allow you 
to skip to the next level of quoting, for the times when you run into 
something redundant, or simply skip the quotes altogether for when you 
know the context. I imagine this could make your experience less annoying.
From: Bruce Stephens
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <87mzsm8f44.fsf@cenderis.demon.co.uk>
·····@newwebsite.com writes:

[...]

> I didn't realize that in a conversion every time somebody wanted to
> comment what the previous person said had to be repeated first.

Well, no, because the comment usually comes immediately following what
it's commenting on.  Sometimes there's still enough lag that we
establish context: "you know you were talking about xxx?  Well, ...".

> It is not the way people normally converse. A newsgroup is supposed
> to be more like a conversation not the written word.

It's some blend of the two.  And sometimes it's very like email, which
is also somewhere between text and conversation.

Sometimes someone may reply to an article that's a day (or more,
sometimes much more) old.

Sometimes I may see a reply before I've seen what it's a reply to
(occasionally the original never appears at all).

Once upon a time that was normal: articles were routinely days old,
and would routinely arrive out of order (by days, and sometimes not at
all).  That's mostly no longer the case, but that's what usenet was
like when the traditions evolved.

> If there are 20 replies to a message I don't need to read the
> question every time before seeing the new posts. I have already read
> the question. I know what the question is. I just need to see the
> new posts. Having read the questions over again and scroll down to
> see the new post is very irritating.

Most newsreaders should be able to hide included text, or otherwise
make it easy to skip (for example, the one I'm using colours text
according to who wrote it, and allows me to conceal it if I want).
From: Tim X
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <87k6nl1wle.fsf@tiger.rapttech.com.au>
Bruce Stephens <············@cenderis.demon.co.uk> writes:

> ·····@newwebsite.com writes:
>
> Sometimes I may see a reply before I've seen what it's a reply to
> (occasionally the original never appears at all).
>
> Once upon a time that was normal: articles were routinely days old,
> and would routinely arrive out of order (by days, and sometimes not at
> all).  That's mostly no longer the case, but that's what usenet was
> like when the traditions evolved.
>
Which raises the point that maybe we should be as flexible as possible
and even possibly review how we post and the appropriate nettiquette
to ensure we stay current with improvements in technology and how it
is used.

Tim
-- 
Tim Cross
The e-mail address on this message is FALSE (obviously!). My real e-mail is
to a company in Australia called rapttech and my login is tcross - if you 
really need to send mail, you should be able to work it out!
From: Bruce Stephens
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <87u0mpqx03.fsf@cenderis.demon.co.uk>
Tim X <····@spamto.devnul.com> writes:

[...]

> Which raises the point that maybe we should be as flexible as
> possible and even possibly review how we post and the appropriate
> nettiquette to ensure we stay current with improvements in
> technology and how it is used.

I think people are fairly flexible.  On the other hand, the
traditionally accepted ways of quoting---removing as much quoted text
as possible, quoting for context, and then adding comments immediately
following what you're commenting---seems like such an obviously good
way to do things.

I think the problem is more that people are using tools that make
doing the right things much more awkward than doing things that are
much worse.
From: Ulrich Hobelmann
Subject: Re: A: Because it messes up the order in which people normally read   text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <3bbhquF6g5sg8U1@individual.net>
Bruce Stephens wrote:
>>Which raises the point that maybe we should be as flexible as
>>possible and even possibly review how we post and the appropriate
>>nettiquette to ensure we stay current with improvements in
>>technology and how it is used.

The netiquette is known, even intuitively by kids.  See below.

> I think the problem is more that people are using tools that make
> doing the right things much more awkward than doing things that are
> much worse.

The interesting thing is that in web-forums (PHP-BB and stuff) 
even script kiddies can figure out how to quote people, and they 
don't include the whole original post.

So would it be the email- and news-tools that are so bad that 
people can't post (like this post)?  Maybe Outlook is to blame, 
after all.
From: Pascal Bourguignon
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <877jjiooor.fsf@thalassa.informatimago.com>
Ulrich Hobelmann <···········@web.de> writes:
> So would it be the email- and news-tools that are so bad that people
> can't post (like this post)?  Maybe Outlook is to blame, after all.

Indeed, some GUI mail user agents put the insertion point before the
citation by default...  Not only Outlook.

-- 
__Pascal Bourguignon__                     http://www.informatimago.com/

Nobody can fix the economy.  Nobody can be trusted with their finger
on the button.  Nobody's perfect.  VOTE FOR NOBODY.
From: Ulrich Hobelmann
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <3beftsF6hh8pvU1@individual.net>
Pascal Bourguignon wrote:
> Indeed, some GUI mail user agents put the insertion point before the
> citation by default...  Not only Outlook.

I wonder which devil rode MS to do this in the first place.

AFAIK for personal as well as business letters it isn't and wasn't 
customary to send a whole copy of the answered letter attached to 
the response.
From: GP lisper
Subject: Re: A: Because it messes up the order in which people normally read text. (Re: Macro expansion newbie question)
Date: 
Message-ID: <1112677803.2448b15386f21fb8afdb77d836e89137@teranews>
On Mon, 04 Apr 2005 22:45:03 -0500, <···········@web.de> wrote:
>
>
> Pascal Bourguignon wrote:
>> Indeed, some GUI mail user agents put the insertion point before the
>> citation by default...  Not only Outlook.
>
> I wonder which devil rode MS to do this in the first place.
>
> AFAIK for personal as well as business letters it isn't and wasn't 
> customary to send a whole copy of the answered letter attached to 
> the response.


Microsoft software is coded by students (ok recent students).  Read
all about it in "Accidental Empires".



-- 
Everyman has three hearts;
one to show the world, one to show friends, and one only he knows.
From: Curt
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <slrnd2m0sm.1gk.curty@einstein.electron.net>
On 2005-03-05, Mike <······@gmail.com> wrote:

> Goodness.  I thought every decent USENET news reader since 1993 gave
> the user a threaded reading mode, so you could easily see the parent
> post.

You can't see it if isn't there.  I thought every smug, former smug weenie
understood the word "asynchronous".

> Googliot indeed.  I *used* to be a Smug Trn Weenie.
From: Thomas A. Russ
Subject: Re: Macro expansion newbie question
Date: 
Message-ID: <ymiwtsmzyme.fsf@sevak.isi.edu>
Mike, MACROEXPAND (and MACROEXPAND-1) are your friends.

You can use them to see what macros expand into.

"Mike" <······@gmail.com> writes:

> What I don't understand is the precise intermediate steps of
> macroexpansion.  Let me make a new example and ask questions about it:
> 
> (defmacro foo (x y) (list 'cons x y))
> 
> Ok, I think we're pretty sure that
> 
> (foo (+ 1 2) (+ 3 4)) => (3 . 7)

(macroexpand '(foo (+ 1 2) (+ 3 4)))

   => (CONS (+ 1 2) (+ 3 4))

So there's your answer.

[Note that MACROEXPAND is a function and that you therefore need
 to quote the expression you want to see the expansion of.   Otherwise
 the macro would expand before MACROEXPAND gets to look at it.]


-- 
Thomas A. Russ,  USC/Information Sciences Institute