Set::Infinite TODO - include "backtrack_callback" in the parameter list for _function() - document the "separators" method - use example from t/infinite.t Find out how to make it more user friendly. - quantize() should use "iterate" (unless this breaks _quantize_span) Find out how to unify "quantize" and the "_recurrence" module (DT::Set) - spaceship should return "undef" if the sets can't be compared. - "contains" should test the result of "==" for undef. - count() should return "undef" if the set can't be counted. - test new methods - methods: is_infinite exists( sub ) / any / ... - Deprecate min_a() min() should check "wantarray", instead. This can generate confusion in some cases - verify this. - New methods: map / grep From a discussion with Andrew Pimlott and Dave Rolsky Find out how to implement "block" syntax (" {} " instead of " sub{} ") -- use '&' prototype - test under 5.005_03 update: It looks like this is not possible: http://www.perlmonks.org/index.pl?node_id=312978 from perlsub: "Pretty much the exclusive domain of prototypes is to make a perl sub act like a builtin. Once you call it via $subref-> or &subname, you are no longer treating it as a builtin and prototypes are ignored." - Redo POD - difference between "size" and "count" - Change syntax: from Class::method to Class->method Old TODO: - parser (another module) - _quantize_span should only be used inside backtrack() Implementing quantize() using iterator() should make _quantize_span() unnecessary. - provide a constructor that allow for un-ordered and overlapping spans - verify and fix unbalanced trace_open/trace_close - move (offset, quantize), or most of Arithmetic.pm, to Date::Set - refactor "widgets" out of the main code. Maybe create a Set::Infinite::Widgets directory (offset, quantize). - give more standard names to Arithmetic.pm variables - implement "last of quantize" - remove _quantize_span() - a set with first == inf or last = -inf is an error! - tests for "iterate" min/max/first/last These may fail if "iterate" returns >= 2 elements - more tests for min/max/span/size on too_complex sets - find out how to compare "<=>" unbounded sets - try using first() in intersects() and "<=>" - test finding out min/max of integer open sets (see backtrack.t tests 2,3) - fix _todo/bigfloat, _todo/bigint BACKTRACK backtrack.t: test backtrack on: iterate -- returning more than 1 element compact tolerance complement backtracking: implement remaining tests in backtrack.t verify results in backtrack.t backtracking: document backtracking resolution SYNTAX extra: Make a 'strict' option for "quantize" and other filters, that will intersect each unit back to the object, that is: Interval: [************************] Quantized: [*********)[*********)[*********) Quantized->Stricted: [*****)[*********)[******] think about: "push-pop", "dup", "drop" mechanism think about: some "if-else" mechanism DOCUMENTATION check: POD formatting and contents verify, document parameter syntax everywhere document: ??? offset option 'mode=>circle' new method 'list' iterate document as "internal": min_a max_a backtrack trace ??? document: quantize extensibility through hash-subs CACHEING cache quantize by month/day/... -- doesn't work if 'quant' is changed -- doesn't check 'intersects' make a 'flush'-cache method. Make a 'cache-registry'. think about: caching for union, etc