Dave Whipp wrote:
Does defining the invocant as "Num @self is constant" constrain the application
> of the role to read-only uses of indices?

I don't think you need "is constant". arguments are readonly by default, unless you give them the "is rw" trait. I guess that "is constant" means that you can specify the index only using a literal, not a variable, eg:

    @test[1]; # ok, 1 is a costant
    my $idx = 1;
    @test[$idx]; # nok, $idx is not a constant

but I may be wrong.

Does the explicit indexing by an "int" typed value ensure that it'll be non-recursive under MMD?

you mean "Num" typed value? if so, I guess using an explicitly non-integer index would make it win under MMD. on the other hand, your method could even not be called at all with an integer index.


If I later decare a sub as

  sub foo ( @in does LinearInterpolation ) { ... }

Would I be able to pass a normal (non-interpolating) array to this sub, and then access it using non-integer indices (i.e. is the data in the array independent of the interface through wich it is accessed).

I don't think so. I'm afraid you have to do something like:

    sub foo (@in) {
        my @_in = @in;
        if(! @in.does(LinearInterpolation) ) {
            @_in does LinearInterpolation;
        }
        # go ahead using @_in
        ...
    }


cheers, Aldo

Reply via email to