> 1. Asserted
>
> The usual case for Perl 6 functions, due to its default "Item"
> signature for parameters. In the example below, I assume that ::* cannot
> be changed freely to do away with ::*IO at runtime. (If it could, then
> assertions won't be of much use in general.)
>
> sub f (IO $x) { $x.close }
> f(open('/etc/passwd'));
>
> As both &f and &open may be rebound at runtime, we cannot guarantee that
> this will not go wrong. However, we can insert an runtime assertion for
> $x
> in &f's scope, so we can avoid doing the same assertion in &*IO::close
> again. If IO is declared as final, then &*IO::close can also be resolved
> statically.
Could this be implemented optimistically, with disabled
assertions which are enabled at runtime if either &f or &open
are rebound?
I hope I've understood your point correctly.
Brad
PS. I'm not on p6c
--
To treat a person harshly is the way of middle-classed lackeys.
-- Hagakure http://bereft.net/hagakure/