Chris Dutton wrote:

> Seeing this, an idea mildly Eiffel-ish comes to mind.  Could we get away
> with something like the following?
> 
> method set_baz(type($.baz) $newbaz) { $.baz = $newbaz }

I'm not sure that Larry has considered precisely what can be used as
a type specifier in Perl 6. Your proposal seems very perlish to me
so I would hope so.

Of course, this would imply that C<type> was an compile-time function, which
doesn't sit well with Perl's predominantly run-time typing. So it would seem
likely that there would need to be both compile-time and run-time versions
of C<type>, or at least distinct compile-time and run-time semantics.
In which case one might need to write:

        method set_baz(BEGIN{type($.baz)} $newbaz) { $.baz = $newbaz }

That's getting a little ugly, so maybe we'd "lift" the syntax from Eiffel instead:

        method set_baz($newbaz is like($.baz)) { $.baz = $newbaz }

Hmmmmmmm.

Damian

Reply via email to