On Thu, Jul 24, 2008 at 16:16:28 -0400, Charles Alderman wrote:
I guess that if you're trying to prevent this as an action at a distance,
'deep_coerce' wouldn't really be acceptable either. Wouldn't that just be
a more explicit warning of an action at a distance?
Declaring an attribute with a parameterized type:
has foo = (
isa = ArrayRef[Foo],
coerce = 1,
);
has a specific behavior right now, it enables only the coercions on
the type ArrayRef[Foo].
If this started coercing using 'Foo's coercions we break
compatibility, and deining a coercion on 'Foo' affects types that
parametrize on it.
deep_coerce is different because:
a. it doesn't break existing code
b. it's explicit about the fact that it's accepting coercions
from the type parameter, so a developer would know to look
there, instead of looking for coercions on 'ArrayRef[Foo]'.
If moose type constraints become too complicated, I guess at some point, a
designer/developer just needs to turn the parametrized type into its own
class. So, maybe I'm answering my own question here.
Custom parametrized types could still make sense though:
MyCustomType[Foo]
is a useful construct for custom container types, for functors, etc
etc, so deep_coerce *is* a useful property to have
At any rate, I'll look more at the mailing list archives...
I think this was only discussed on IRC actually
--
Yuval Kogman [EMAIL PROTECTED]
http://nothingmuch.woobling.org 0xEBD27418