Aaron Sherman wrote:
>
> In the RFC, I was trying to develop a method by which a module could
> assert a stricture (consider this part of "use strict" in Perl 6 if you
> will) that would constrain the CALLER of that module (as well as the
> module itself, of course) to a particular signature template for a
> multi. This allows us to centrally document a multi that might be
> defined in many places, and have that documentation actively constrain
> the multi to match. In this way, the user doesn't have to figure out
> that max is a method on Array in order to find its documentation, and a
> module that uses Array gets
>
Um, so if I get this right, you want to restrict the users of the module
from *EVER* extending that particular part of the module's functionality?
I would be strongly opposed to the existence of this feature. Firstly,
what you propose is not DBC. Design by contract is about requiring
minimal functionality from the parties in the contract, not about
banning them from going above the requirements. Secondly, what happens
when you use two modules with two different prototypes for the same
multi? Without this declaration, and assuming the modules don't try to
dispatch on the same argument lists, everything just works. But with
this stricture, you simply aren't allowed to do this, and I don't see
any justification for it. Frankly, sometimes things -will- be named the
same and yes, sometimes you need to use grep to find the docs. Not sure
why this is a problem, though.
Miro
Thread Previous
|
Thread Next