# Re: explicit line termination with ";": why?

On Tue, May 15, 2007 at 01:14:44PM -0600, Luke Palmer wrote:
> However, I do think that it's useful to be able to treat the rest of
> the current scope as a block (usually with a parameter), for certain
> kinds of closure-heavy code.
Maybe this is a case for one of Mr. Lang's custom semicolons with added
functionality: you could have something that worked a bit like the
lambda-calculus ".". It would slurp up as much of the RHS as possible,
which would almost always[1] be until the end of the enclosing block,
and 'return' it (in a syntactic way) to whatever on the LHS wants a
block.  So, like Mr. Palmer's example, you would get something like

sub do_stuff() {
my @foo = get_me_a_list;
for @foo :-
.subst(/bar/,'baz').say;
}

[1] By "almost always" I mean I can't think of a reason for it to
sometimes not be that, but one or more may exist. Anywhere you would
want it to stop before the end of the enclosing block you should
probably use curlies anyway to stop it being confusing.

I'm not sure whether I would use these magic brace-opening semicolons
even if they were in. It seems to be to be less readable, but maybe
that's just because I haven't seen a compelling enough example. In the
worst case they would lead to code that looks like the old-style TeX
idiom of "normal {\bf bold} normal", where you open braces around the
whole block and do a state-change-like thing inside rather than a
functional thing that takes the thing you want operated on as an
argument. That doesn't mean we shouldn't allow custom semicolons with
added functionality; just that maybe this is not the best use for them
after all.

--
Mary had a little sprout,        From week to week, from month to month,
Its fleece was green as grass,               She kept the sprout in tow,
She hitched it to a bit of string,        And everywhere that Mary went,
The silly little ass.                         The sprout was sure to go.


signature.asc
Description: Digital signature