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