Stevan, Dave,

thanks for your input. I renamed the module. It is now available at 
https://github.com/monken/p5-moosex-attribute-dependent.

I also ditched the TypeConstraint thingy and implemented it myself. Took some 
time to figure out the
Type[] magic but eventually... :-)

Please tell me if you have any more suggestions or ideas.

Cheers,
mo

Am 26.12.2010 um 16:46 schrieb Stevan Little:

> Yeah, I have to agree, my first reaction was based on the examples and tests, 
> but upon further review of the code I think Dave is right.
> 
> You see, in Moose a type constraint acts upon the value in the attribute and 
> knows nothing of the object that contains it. This is part of what makes 
> Moose type constraints so useful outside of Moose as well as inside.
> 
> I am not actually sure you need to include types in this, much of what you 
> are using Moose::Meta::TypeConstraint could easily be written as a stand 
> along "Dependency" class. Additionally by adding your types to the global 
> type registry in MooseX::Dependency::Types you are making them accessible to 
> everyone as proper Moose types, which they really aren't since they require a 
> specialized set of arguments.
> 
> I think you could easily remove the type-system elements of this and create a 
> nice and useful MooseX:: module that handles the dependencies between 
> attributes.
> 
> I do like the Any[], All[], etc. though, so I think you should keep that.
> 
> - Stevan
> 
> On Dec 26, 2010, at 10:17 AM, Dave Rolsky wrote:
> 
>> On Sun, 26 Dec 2010, Stevan Little wrote:
>> 
>>> Looks good, however I think MooseX::Depedency is too general a name, how 
>>> about MooseX::Types::Dependent::Types?
>> 
>> I don't think this is what dependent types means.
> 
> No, but kinda. Dependent types are a type of type system (hehe) that are 
> dependent upon runtime values, the example on wikipedia 
> (http://en.wikipedia.org/wiki/Dependent_type) is kinda nice :
> 
>  An example is the type of n-tuples of real numbers. This is a dependent type 
> because the type depends on the value n.
> 
> So in (psuedo) Moose land that might be something like:
> 
>  subtype IntTuple => as_dependent_type { Tuple[ type => 'Int', size => $_[0] 
> ] };
> 
> Where '$_[0]' is parameterizable for the given type, like so:
> 
>  has small_tuple => ( ... isa => IntTuple[ 2 ] ... );
>  has big_tuple => ( ... isa => IntTuple[ 20 ] ... );
> 
> This example wouldn't of course help if you wanted access to $self, but the 
> idea could be expanded upon perhaps to work in this case.
> 
> Honestly though, I think this really overcomplicates the type system and is 
> much more difficult to use and understand then something more like what 
> Moritz has created here.
> 
> 
>> Also, I'm not sure this has anything to do with types at all. This is really 
>> about whether a value is _required_.
>> 
>> Maybe MX::Attribute::Dependent or something like that.
>> 
>> 
>> -dave
>> 
>> /*============================================================
>> http://VegGuide.org               http://blog.urth.org
>> Your guide to all that's veg      House Absolute(ly Pointless)
>> ============================================================*/
> 

Reply via email to