Email list hosting service & mailing list manager

First impressions of the specification Mark H Weaver (22 Mar 2013 06:32 UTC)
Re: First impressions of the specification Alan Manuel Gloria (22 Mar 2013 09:23 UTC)
Re: First impressions of the specification David A. Wheeler (22 Mar 2013 12:49 UTC)
Re: First impressions of the specification John Cowan (22 Mar 2013 13:52 UTC)
Re: First impressions of the specification David A. Wheeler (22 Mar 2013 21:58 UTC)
Re: First impressions of the specification Mark H Weaver (23 Mar 2013 02:12 UTC)
Re: First impressions of the specification David A. Wheeler (25 Mar 2013 00:07 UTC)
Re: First impressions of the specification Mark H Weaver (26 Mar 2013 04:20 UTC)
Re: First impressions of the specification David A. Wheeler (26 Mar 2013 05:07 UTC)
Re: First impressions of the specification John Cowan (26 Mar 2013 08:48 UTC)
Re: First impressions of the specification Alan Manuel Gloria (26 Mar 2013 09:03 UTC)
Re: First impressions of the specification John Cowan (26 Mar 2013 09:28 UTC)
Re: First impressions of the specification Mark H Weaver (26 Mar 2013 12:04 UTC)
Re: First impressions of the specification David A. Wheeler (26 Mar 2013 13:13 UTC)
Re: First impressions of the specification David A. Wheeler (26 Mar 2013 05:08 UTC)
Re: First impressions of the specification David A. Wheeler (26 Mar 2013 21:49 UTC)
Re: First impressions of the specification Mark H Weaver (27 Mar 2013 01:43 UTC)
Re: First impressions of the specification David A. Wheeler (27 Mar 2013 03:49 UTC)
Re: First impressions of the specification Mark H Weaver (27 Mar 2013 05:24 UTC)
Re: First impressions of the specification Alan Manuel Gloria (27 Mar 2013 07:30 UTC)
Re: First impressions of the specification Mark H Weaver (27 Mar 2013 13:01 UTC)
Re: First impressions of the specification Alan Manuel Gloria (28 Mar 2013 02:20 UTC)
Re: First impressions of the specification David A. Wheeler (28 Mar 2013 02:45 UTC)
Re: First impressions of the specification David A. Wheeler (27 Mar 2013 21:31 UTC)
Re: First impressions of the specification Mark H Weaver (30 Mar 2013 16:12 UTC)
Re: First impressions of the specification David A. Wheeler (30 Mar 2013 18:15 UTC)
Re: OT: Formatting Lisp code from the command line Mark H Weaver (30 Mar 2013 21:36 UTC)
Re: OT: Formatting Lisp code from the command line John Cowan (30 Mar 2013 21:45 UTC)

Re: First impressions of the specification Mark H Weaver 27 Mar 2013 13:00 UTC

Hi Alan,

Alan Manuel Gloria <xxxxxx@gmail.com> writes:
> 2.  A #|...|# comment is "removed" and replaced with GROUP if it's the
> first thing after indentation whitespace, or just "removed" otherwise.

This clarification (and the associated example equivalence shown below)
is very helpful to my understanding.

>  Basically, it means that:
>
> foo
>   #| comment
> |# bar #|
> comment
> |# nitz
>
> is the same as:
>
> foo
>   \\ bar nitz

Something along these lines should be integrated into the text, I think.

To simply write "Block comments (#|...|#) are removed" immediately
raises the question "what if it's the first thing after indent", and I
didn't find an answer in either the tutorial or the basic specification.

>> * I have doubts whether the addition of '!' as an indentation character
>>   is worth the added complexity in the spec (which is far more complex
>>   than I'd prefer, and I'm sure I'm not alone in feeling that way).
>>   Python seems to do fine without such a character.  So do Makefiles.
>>   If it's truly needed, then it presents authors with a dilemma about
>>   whether or not to put them in all the code that they write.
>
> ! is surprisingly useful.  Here's an example which is readable, but
> difficult to modify if you need to add an else clause:
>
> define (foo x)
>   define something $ cond
>                        (pred1? x) $ begin
>                                       something that is
>                                       very long
>                                       spanning several lines
>                                       and might
>                                         end up
>                                           with severe
>                                             changes in indentation
>                                       like this
>                                       and so on
>                                         so forth
>                                         whatsover ...
>                        (pred2? x) $ begin
>                                       another long clause
>                                       involving several
>                                         more lines
>                                       and which
>                                         also ends
>                                           in
>                                             (severe)
>                                           changes
>                                             in indentation
>                                               at the end
>   quux something

Hmm.  I see what you mean, but I'd expect python to have the same
problem, and yet they seem to do fine without this.

For that matter, a similar example using traditional S-expressions could
demonstrate the difficulty in adding a new clause and getting things
lined up properly.  Of course, as you say:

> In s-expressions, it's safe to lose a space or two when you insert a
> clause at the end of the cond - the parens (should) guide the parser
> to the correct insertion.

and that's true in theory, but in practice we almost never see
incorrectly indented S-expr code, and that's because almost everyone who
writes Lisp gets a lot of help from modern editors.

And that leads to my next question: has anyone written a nice emacs mode
to help edit sweet expressions?  I think that such a mode will be
crucial for adoption.  I doubt that many Lisp hackers will be interested
in trying to get things lined up by hand.  We've had better tools for
decades, and have grown accustomed to those conveniences.  Almost none
of us want to go back to the stone age, no matter how nice it looks.

    Regards,
      Mark