On Mon, Dec 06, 2004 at 05:43:16AM +0000, Nigel Sandever wrote:
: I probably missed teh comprehensive dismissal thread, but why not 'type'?
: 
:       my %pet is Hash[:type(Str) :returns(Cat)];

Well, "type" is just a little off in a couple of ways.  On the one hand,
it's not specific enough, insofar as there are several different
types involved.  On the other hand, it's too specific, insofar as what
you're specifying there is not a type, but something more like a signature,
albeit one without parameters.  It's more like the attachment on a
multi to pick one of a set: &abs<complex>.

That says to me that what we're really looking at is

    my Cat %pet is sig(Str);
    my @matrix is sig(int where 0..3, int where 0..3);

where those might be abbreviated as:

    my Cat %pet (Str);
    my %matrix (3,3);

or

    my Cat %pet .{Str};
    my %matrix .[3;3];

or maybe even

    my Cat %pet{Str};
    my %matrix[3;3];

Which says that

    my sub foo ($a) {...}

is maybe short for

    my sub foo .($a) {...}

Hmm.  Also says maybe you could attach a block to a hash or array to
define what subscripting does.  Hmm.

Larry

Reply via email to