From: Emre Sevinc
Subject: Re: Looking for specific feedback: Story of Mac
Date: 
Message-ID: <87is7nm365.fsf@bilgi.edu.tr>
Peter Seibel <·····@javamonkey.com> writes:

> In chapter 8 of Practical Common Lisp there is a "Just So" story, The
> Story of Mac, about how macros came to be. ("Just So" as in Rudyard
> Kipling's Just So stories about how, say, the elephant got it's
> trunk.) So far the feedback on that section has been mixed--some folks
> hate it; others like it.
>
> I'm revising that chapter now, so if you've got an opinion, now's the
> time to let me know. This is not a vote--ultimately I'll decide
> whether Mac lives or dies; I'm just interested on what folks think.

I am also one of the people learning Lisp from your book
and that DEFinition-for-MAC-Read-Only story is something I'll
never forget. This kind of narrative taps very different parts
of memory and makes it very difficult to forget. In a sidebar
or flowing through the text, I believe you should keep it.


-- 
Emre Sevinc

eMBA Software Developer         Actively engaged in:
http:www.bilgi.edu.tr           http://ileriseviye.org
http://www.bilgi.edu.tr         http://fazlamesai.net
Cognitive Science Student       http://cazci.com
http://www.cogsci.boun.edu.tr

From: Chris Capel
Subject: Re: Looking for specific feedback: Story of Mac
Date: 
Message-ID: <10qqleb9d8rvf02@corp.supernews.com>
Emre Sevinc wrote:

> Peter Seibel <·····@javamonkey.com> writes:
> 
>> In chapter 8 of Practical Common Lisp there is a "Just So" story, The
>> Story of Mac, about how macros came to be. ("Just So" as in Rudyard
>> Kipling's Just So stories about how, say, the elephant got it's
>> trunk.) So far the feedback on that section has been mixed--some folks
>> hate it; others like it.
>>
>> I'm revising that chapter now, so if you've got an opinion, now's the
>> time to let me know. This is not a vote--ultimately I'll decide
>> whether Mac lives or dies; I'm just interested on what folks think.
> 
> or flowing through the text

Now that's a thought. Interweave the story throughout the rest of the
chapter (or even the whole book) connecting different parts of the story
(perhaps slightly modified) to lisp itself. That way it might actually
*fit* in sidebars.

Chris Capel
From: Damien Kick
Subject: Re: Looking for specific feedback: Story of Mac
Date: 
Message-ID: <u0pe4jku.fsf@email.mot.com>
Chris Capel <······@iba.nktech.net> writes:

> Emre Sevinc wrote:
> 
> > Peter Seibel <·····@javamonkey.com> writes:
> > 
> >> In chapter 8 of Practical Common Lisp there is a "Just So" story, The
> >> Story of Mac, about how macros came to be. ("Just So" as in Rudyard
> >> Kipling's Just So stories about how, say, the elephant got it's
> >> trunk.) So far the feedback on that section has been mixed--some folks
> >> hate it; others like it.
> >>
> >> I'm revising that chapter now, so if you've got an opinion, now's the
> >> time to let me know. This is not a vote--ultimately I'll decide
> >> whether Mac lives or dies; I'm just interested on what folks think.
> > or flowing through the text
> 
> Now that's a thought. Interweave the story throughout the rest of the
> chapter (or even the whole book) connecting different parts of the story
> (perhaps slightly modified) to lisp itself. That way it might actually
> *fit* in sidebars.

I am not an editor (IANAE), and I hope I'm not already too late with
this or looking at the wrong draft or something and I realize that I'm
using a run-on sentence to start a critique of a book, but:

I really like the idea behind the story of Mac but I have difficulties
with the flow from chapter 7, in which you already introduce DEFMACRO,
into chapter 8, in which you first mention Mac.  The way the chapters
currently flow, chapter 7 introduces a macro for WHEN, for example,
but then mentions Mac in chapter 8.  It seems kind of ham-handed to me
to plop Mac into the beginning of chapter 8 after already having shown
forms using DEFMACRO in chapter 7.

Perhaps it would work better if, for example, one were to start with
the assumption that macros did not exist.  With that assumption in
place, show a chunk of code that one would have to write by hand if it
where not for macros.  Then introduce the notion into the story that
someone got sick of repeating that same pattern of code over and over
again and just put a comment into the code but actually show this in
the text of the chapter, as if it were a code snippet from this
mythical company.

    ;; For Mac: would be nice if the compiler had a WHEN operator,
    ;; like IF but only with one conditional branch and an implicit
    ;; PROGN

From there, one could progress the story with examples included in the
text of the chapters.

    ;; For Mac, read-only: (defun generate-when-code ...) should
    ;; generate code that looks something like this

And then show how writing

    (defun generate-when-code (test code)
      (list 'if test (list* 'progn code)))

is made easier with

    (defun generate-when-code (test code)
      `(if ,test (progn ,@code)))

One could pretend that Mac invented this backquote notation as a way
of expressing a template for what the code should look like.
Something like that, just as an example; the basic idea being to
somehow mixin the content of chapters 7 & 8 to use Mac as a story to
introduce macros woven into an example of a good place to use a macro
before one actually finds DEFMACRO in the text.

Anyway, I hope this helps or at least sparks some thought, if nothing
else.  Again, I really like the story of Mac and think it adds to the
book.  However, I agree that it needs some kind of a rewrite and am
looking forward to the next draft.