1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
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
|