Hi,

I don't think, that I can bring any theoretical reasons for preferring one
style over the other. I tried both. I must admit, that I liked the style
Andrew is evangelizing more and tried to use it exclusively. The difference
(for me) has shown itself when I wrote a script having six-page listing.
Then I found out, that the orientation in the script using enclosing bracket
indentation worsened drastically (for me) against its RT approved version.
That is why I am currently using the RT approved version and knowing, that
there is a good reason for it.

Cheers
    Ladislav


----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, October 07, 2000 12:00 AM
Subject: [REBOL] Transpose Re:(4)


> This is clearly one of those "you say tomato, I say ketchup" issues.
> Anyone who doesn't like ketchup on his steak (or steak under his ketchup)
> is welcome to skip this post entirely!
>
> -jn-
>
> [EMAIL PROTECTED] wrote:
> >
> > Rebol Crew wrote:
> > > The contents of a block are indented, but the block's enclosing
brackets
> > [] are not. That's because the brackets belong to the prior level of
syntax
> > as they define the block, but are not contents of the block. Also it's
> > easier to spot breaks between adjacent blocks when the brackets stand
out.
> >
> > I disagree with Carl's reasoning here, but I can cope with it. I prefer
the
> > better human readable style like this example:
> >
> >     repeat Index Width [
> >         Column: make block! Width
> >         foreach Row Matrix [
> >             insert/only tail Column Row/:Index
> >             ]
> >         insert/only tail Results Column
> >         ]
> >
>
> I've always understood INdentation as showing what was IN something else.
> Viewed strictly as a block (i.e. ignoring the fact that I think I know
what
> some of those words mean...) the example above has this shape to my mind's
> eye (abbreviating a few places -- strictly for space -- and making
explicit
> an enclosing block...):
>
>                                   [*]
>                         /----------^---------\
>
>                         repeat Index Width [*]
> /-------------------------------------------^------------------------\
> Column: make block! Width foreach Row Matrix [*] append Results Column
>                                     /---------^---------\
>                                     append Results Column
>
> (Those hyphens, carets, asterisks, slashes, and backwardslashes are
> standing in for the nice pretty lines in my head...)
>
> The top level block contains 4 things -- three words and another block.
> That last block contains 11 things -- the eighth of which is another
> block.  etc...  Notice that the contents are UNDER the brackets  -- [*] --
> that mark the boundaries of the block.
>
> Of course, this horizontal layout is not going to work typographically,
> especially in email, as my lists get longer.  So we can rotate it to run
> vertically.  Unfortunately I don't have rotated brackets on my keyboard,
> so I'll just have to use the same old more-or-less-vertical ones:
>
>    /  repeat  /  Column:
> [  |  Index   |  make
> *-<   Width   |  block!
> ]  |  [       |  Width
>    |  *------<   foreach
>    \  ]       |  Row
>               |  Matrix
>               |  [        /  append
>               |  *-------<   Results
>               |  ]        \  Column
>               |  append
>               |  Results
>               \  Column
>
> Notice that the contents of a block are still under the brackets that
> mark the block's boundaries (although logical "under" is now geometrically
> "to the right").  Of course all these overlapping columns of words and
> lines are a little cluttered (even though more compact) so let's try to
> declutter by putting contents between the boundaries of their blocks
> (but still INdenting to make it clear that they are INside the blocks):
>
>     [
>         repeat
>         Index
>         Width
>         [
>             Column:
>             make
>             block!
>             Width
>             foreach
>             Row
>             Matrix
>             [
>                 append
>                 tail
>                 Column
>                 Row/:Index
>             ]
>             append
>             tail
>             Results
>             Column
>         ]
>     ]
>
> Now let's remember that we know what these "words" mean.  If we do,
> we'll tend to think of bigger units, perhaps called "phrases", that
> group words into fewer, bigger chunks.  If I do that, I'll have to
> keep the first word of a new phrase back at the same level that
> it had before I started "chunking", so I don't lose track of my
> levels.
>
> If one of these phrases includes a block, I may try to write it out
> all at once.  but if it doesn't fit, I'll try to pull the open brace
> into the line with the rest of the phrase, but leave the content
> indented with the closing brace "outdented" back to its own level
> to make it clear that I've come back up/out a level in the structure.
>
>     [
>         repeat Index Width [
>             Column: make block! Width
>             foreach Row Matrix [ append tail Column Row/:Index ]
>             append tail Results Column
>         ]
>     ]
>
> This also lets me work top-down/breadth-first into the structure,
> only disclosing lower levels as I work my way down to them.  To
> my eye, an empty (or hidden) block is ONE thing even if it's written
> with two keystrokes "[]".  When I have to break the case open, I
> put the two halves at the same level
>
> Level 0 view ("outside"):
>
>     []
>
> Level 0 opening:
>
>     [
>     ]
>
> Level 1 revealed:
>
>     [
>         repeat Index Width []
>     ]
>
> Level 1 opening:
>
>     [
>         repeat Index Width [
>         ]
>     ]
>
> ...
>
> Well, no point in beating this dead horse further -- the horse steak
> is as tender as its going to get!
>
> However, notice that (in the spirit of comprimise) I've tried to keep
> the initial caps on Important Words!  ;-)
>
> --
> ; Joel Neely  [EMAIL PROTECTED]  901-263-4460  38017/HKA/9677
> REBOL []  print to-string debase decompress #{
>     789C0BCE0BAB4A7176CA48CAB53448740FABF474F3720BCC
>     B6F4F574CFC888342AC949CE74B50500E1710C0C24000000}
>
>

Reply via email to