Larry mused:

On the other hand, I'm not all that attached to colon itself.

I *am*!!!


If, as proposed elsewhere, we get rid of the %Foo:: notation in favor of
some Foo<> variant, then trailing :: becomes available (ignoring ??/::
for the moment), and

    new Dog:: tail => 'long'

almost makes sense, insofar as it kinda looks like it's marking Dog
as a type name, even though it isn't.  But

    new Dog:: :tail<long>

doesn't look so good.

Nor do object methods:

      wag $dog:: 'tail';

      say $fh:: $whatever;



On the other hand, looking at it from the other end, the MMD notation
tiebreaking notation is a little hard to spot, since colon is easy
to miss.

Is it??? I've been writing quite a bit of MMD notation, and I think the colon is very obvious...and exactly the right visual "weight".


Maybe there's something that shows up better in a signature
that also works as the invocant marker and, by extension, the indirect
object marker.  Since it's an ordering kind of thing, you'd kind of
like to work > into it somehow, since the left side is of "greater"
importance than the left.  Unfortunately, though, "the good ones are
all taken".  Maybe some digraph like

    method new ($what*> $:tail) {...}
    method new ($what+> $:tail) {...}
    method new ($what.> $:tail) {...}
    method new ($what|> $:tail) {...}
    method new ($what>> $:tail) {...}

giving

    new Dog*> :tail<long>
    new Dog+> :tail<long>
    new Dog.> :tail<long>
    new Dog|> :tail<long>
    new Dog>> :tail<long>

I guess that last one is eqivalent to:

    method new ($what» $:tail) {...}
    new Dog» :tail<long>

which I could maybe get used to.  It kind of looks like a prompt to me.

Not one of these is anything close to as readable as:

    new Dog: :tail<long>

    name $dog: 'Rover';

    say fh:   @whatever

*Please* don't give up on the colon there. It's much more readable. I especially like it for setting up objects:

        $person = Contact.new;

         first_name $person: "George";
        family_name $person: "Bush";
              title $person: "President";
              email $person: "[EMAIL PROTECTED]";
             spouse $person: search $contacts: "Laura";


The ordinary MMD might look like

    multi foo ($a, $b, $c» $d)

And Lisp-like MMD fallback on every argument would look like

    multi foo ($a» $b» $c» $d»)

I suppose that particular use of » could be construed as encouraging
people not to do that.  :-)

I truly believe that using the French quotes or (shudder!) their Texan equivalents here would be a dire step backwards. They're already overloaded for word lists and hyperoperators. I think using them for an invocant marker as well would simply be too much.

The colon really was (and still is) the right choice here.

Damian

Reply via email to