Aaron Sherman writes: > On Wed, 2005-03-30 at 13:53, Luke Palmer wrote: > > > class CodeProxy { > > has Code $.code is rw; > > sub call ($a) { > > $.code($a); > > } > > } > > > This is valid Perl 6, and anyone who says otherwise (because of type > > signatures) is changing the Perl philosophy too much to be taken > > seriously. Now, tell me at compile time whether the call inside `call` > > is valid. > > It's valid because it's a function call on a code ref. In that case, the > compiler has to hand your request off to the run-time to check the > vtable of $.code. Clearly that's a special case. I may have missed > context at the start, but are we worried about the special cases or the > general case or the implications to the general case of the special > cases?
Okay, now we're starting to talk past each other. I /think/ Thomas orignially suggested that we use type inference to determine whether to lvalue cast an argument or not, which is what I got all worked up about. I'm saying that you can't determine that kind of thing in general at compile time. I'm all for an optional strong type system, as long as it remains optional and mixable (so static things and dynamic things can play nicely together, whether the module is static and the user dynamic or vice-versa). Luke