X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=TODO;h=7e66a5176c2edda35ad78cb0bcbcf67026b21441;hb=1a386a6c4c98a3332f97c2920d67e0fcb3096e6c;hp=3fde938e94b081283fe39156de3e9789649f9f3a;hpb=d05cd5639ab973413921e2fbfca9ed85dfebe9cf;p=gitmo%2FMoose.git diff --git a/TODO b/TODO index 3fde938..7e66a51 100644 --- a/TODO +++ b/TODO @@ -1,10 +1,27 @@ ------------------------------------------------------------------------------- + BUGS +------------------------------------------------------------------------------- + +------------------------------------------------------------------------------- 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]) }; -Need to figure out the details of composite roles +subtype 'Blob' + => as 'Value' + => where { !Encode::is_utf8( $_[0] ) } + => optimize_as { defined($_[0]) && !ref($_[0]) }; + + +- 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 @@ -31,26 +48,6 @@ over there.. in that other object (... probably be a custom metaclass) -- compile time extends - -[00:39] sri but maybe a better syntax for compile time extends -[00:39] stevan I have been pondering that actually -[00:39] sri use Moose extends => Foo::Bar -[00:40] stevan I think now that we have the Sub::Exporter stuff - in, that kinda thing should be pretty easy - -nothingmuch notes that all the constructs should be supported in the entirety of the use clause: - - use Moose ( - has => foo ( - .... - ), - ); - -and that if this usage style is used nothing is exported to the namespace. - -- default should dclone() - - subtype $anon_subtype => where { ... } [22:56] stevan sub mst_doesnt_like_to_type { (shift)->meta->attr->type_contstraint } @@ -81,41 +78,35 @@ and that if this usage style is used nothing is exported to the namespace. [23:01] mst right [23:01] stevan ok -- method keyword - -[23:37] mst more seriously, I'd still like a "method" keyword or something -[23:37] mst method 'foo' => sub { ... }; -[23:38] stevan what would it do more than sub foo { ... }? -[23:39] stevan I would like multimethods actually -[23:39] mst almost exactly nothing, to begin with -[23:39] stevan but thats just cause I love CLOS and am reading a book on Dylan now -[23:40] stevan keyword squating :) -[23:40] mst but if we need to hook stuff later it's bloody handy to already have people writing it that way -[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 " +[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 $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 -------------------------------------------------------------------------------