-------------------------------------------------------------------------------
+ BUGS
+-------------------------------------------------------------------------------
+
+mst: if I do "subtype 'Foo' => as 'Bar';" I get an empty condition and it dies
+
+-------------------------------------------------------------------------------
TODO
-------------------------------------------------------------------------------
-- roles
+- DDuncan's Str types
+
+subtype 'Str'
+ => as 'Value'
+ => where { Encode::is_utf8( $_[0] ) or $_[0] !~ m/[^0x00-0x7F]/x }
+ => optimize_as { defined($_[0]) && !ref($_[0]) };
+
+subtype 'Blob'
+ => as 'Value'
+ => where { !Encode::is_utf8( $_[0] ) }
+ => optimize_as { defined($_[0]) && !ref($_[0]) };
-Need to figure out the details of composite roles
+
+- should handle some moose-specific options in &Moose::Meta::Class::create
+ things like roles, and method modifiers (although those can probably be
+ ignored if i want to)
- type unions
[23:40] mst right
...
[23:49] mst oh, also: method 'has' => sub { ... } could squelch the redefine warning
-
-- Role excludes
-
-[17:00] stevan I am reading the new Fortress Spec
-[17:00] stevan http://research.sun.com/projects/plrg/fortress0903.pdf
-[17:00] stevan they have traits too
-[17:01] stevan and they have one cool feature which we might want to steal
-[17:01] stevan traits can "exclude" other traits
-[17:01] stevan which means they cannot be combined with other classes/roles which does() that trait
-[17:01] stevan the example they give is
-[17:01] stevan trait OrganicMolecule extends Molecule
-[17:01] stevan excludes { InorganicMolecule }
-[17:01] stevan end
-[17:01] stevan trait InorganicMolecule extends Molecule
-[17:01] stevan end
-[17:01] stevan this creates a set of mutually exclusive traits
-[17:02] stevan so that this:
-[17:02] stevan trait ScienceGoo extends { OrganicMolecule, InorganicMolocule } end
-[17:02] stevan would fail
-[17:02] stevan because OrganicMolecule, InorganicMolocule can never be used together
-[17:03] stevan I am thinking this is quite sane
-
+
+- local coerce
+
+[13:16] mst stevan: slight problem with coerce
+[13:16] mst I only get to declare it once
+[13:17] mst so if I'm trying to declare it cast-style per-source-class rather than per-target-class
+[13:17] mst I am extremely screwed
+[13:17] stevan yes
+[13:17] stevan they are not class specific
+[13:18] stevan they are attached to the type constraint itself
+[13:18] * stevan ponders anon-coercion-metaobjects
+[13:18] mst yes, that's fine
+[13:19] mst but when I declare a class
+[13:19] mst I want to be able to say "this class coerces to X type via <this>"
+[13:19] stevan yeah something like that
+[13:19] stevan oh,.. hmm
+[13:20] stevan sort of like inflate/deflate?
+[13:20] stevan around the accessors?
+[13:25] * bluefeet has quit (Remote host closed the connection)
+[13:27] mst no
+[13:27] mst nothing like that
+[13:27] mst like a cast
+[13:31] mst stevan: $obj->foo($bar); where 'foo' expects a 'Foo' object
+[13:31] mst stevan: is effectively <Foo>$bar, right?
+[13:32] mst stevan: I want to be able to say in package Bar
+[13:32] mst stevan: coerce_to 'Foo' via { ... };
+[13:32] mst etc.
+[13:53] stevan hmm
+
+
-------------------------------------------------------------------------------
TO PONDER
-------------------------------------------------------------------------------