Okay, after attempting and failing to take a nap, I think I know what's
bugging me about "long dot".  It seems just a little too specific.

So here's another proposal.  We've been saying forever that we don't
need start/stop comments.  But maybe, just maybe, if they also cure the
delayed postfix problem, it's worth it.  Suppose that, rather than something
traditional like /* ... */, we define our comment delimiters as

    .# ... #.
    
Then instead of:

    $x.   .()

    $x...
    .()

we could instead have

    $x.#   #.()

    $x.#
    #.()

and that actually reduces down to $x() in either case.  That is,
the dots look like dots but neither of them is a real dot, which works
for anything but .foo methods, which would have to be something like:

    $x.#
    #..foo

which is a bit unfortunate, but maybe we can fix it somehow by making
one of the dots real.  Unfortunately that limits its use as a general
embedded comment.  So maybe the trailing delimiter is wrong.  Here's
anther idea: let people pick a delimiter:

    $x.#( comment  ).()

    $x.#[ comment
    ].()

That would give us .#[...] as the general embedded comment form, and the
first dot is not a real dot, but any dot after the closing delimiter
would be a real dot.

If we make the delimiter anything following q/.../ rules, then
the one-liner form for lining up things gives us:

    :foo.#.      .(1,2,3)
    :foobar.#.   .(1,2,3)
    :foobarbaz.#..(1,2,3)

If that's too ugly, I suppose would could make .\s short for .#. so
we could still write

    :foo.       .(1,2,3)
    :foobar.    .(1,2,3)
    :foobarbaz. .(1,2,3)

Also returns .. and ... to being completely unambiguous.

Another approach would be to say that the #// mechanism works without
the dot, but that seems like asking for trouble.  And it doesn't give
the mnemonic of a dot on either end.

    $x#( comment  ).()
        or
    $x.#( comment  )()

    $x#[ comment
    ].()
        or
    $x.#[ comment
    ]()

Which is actually okay for anything but regular methods:

    $x#[ comment
    ].foo()
        or
    $x.#[ comment
    ]foo()

But I think it's just a little too easy to write #x by accident and
get x as the delimiter, so I'm leaning towards, .#// still.

Larry

Reply via email to