making indentation marker &| implicit Per Bothner (28 May 2013 01:09 UTC)
Re: making indentation marker &| implicit Alex Shinn (28 May 2013 02:03 UTC)
Re: making indentation marker &| implicit Per Bothner (28 May 2013 07:19 UTC)
Re: making indentation marker &| implicit Alex Shinn (28 May 2013 08:41 UTC)
Re: making indentation marker &| implicit Per Bothner (01 Jun 2013 23:25 UTC)

Re: making indentation marker &| implicit Per Bothner 28 May 2013 07:19 UTC

On 05/27/2013 06:39 PM, Alex Shinn wrote:
> On Tue, May 28, 2013 at 10:09 AM, Per Bothner <xxxxxx@bothner.com
> <mailto:xxxxxx@bothner.com>> wrote:

>     ... Scribble avoids this in a way that seems nicer:
>     Any indentation that is common to each line
>    (following a newline) is stripped.
>
> This is the part that always bothered me, and why I didn't
> implement indentation removal.  Many of the examples are
> unintuitive, and the rule itself does not seem to be consistent.
>
> For example, the docs have
>
> @foo{bar
>    baz
>    bbb}
>
> reads as
>
>
> (foo "bar""\n"
>      "baz""\n"
>      "bbb")
>
>
> Why?  The indentation of the leading bar is deeper in the
> source port than the following lines, yet shallower in the
> string.  How does it get the same result indentation?

I agree - it is rather "magic".
My guess is they wanted to support the following two styles:

@foo{bar
      baz
      bbb}

or:

@foo{
   bar
   baz
   bbb}

and so tried to define rules to support those.

Writing

@foo{bar
   baz
   bbb}

doesn't really make sense.

> Unsure of the right semantics, it seemed simpler to leave
> this out since it's easy enough to specify arbitrary trimming
> behavior separately:
>
> @trim{@foo{
>    ...
> }}

Well, that becomes tedious if you have to do it often.

>     Tabs would have to be consistent: If a line starts with
>     T1 tabs followed by S1 spaces, and another line starts with
>     T2 tabs followed by S2 spaces, then it is an error if
>     (and (not (= T1 T2)) (> S1 0) (> S2 0)).
>
>
> I presume you mean not an error, just not the same indentation?

I mean an error - it indicates ambiguous use of TABs.

> ... alternately just define a tab as 8 spaces.

That is fine in a Unix-based culture.  Some programming
cultures use TAB to mean "indentation unit", which can
be set according to user preference.  I.e. TAB is a
flexible user-settable length.  Thus if you use TABS
inconsistently the indentation is ambiguous, and I thin
at least deserves a warning.
--
	--Per Bothner
xxxxxx@bothner.com   http://per.bothner.com/