KNOWN BUGS

- the 'recurrence' argument should be $_, instead of $_[0].
  This is too late to change, because there are many DateTime modules
  that use it.

- 'set_time_zone' was published as a function, then as a mutator, 
  then as a function, then as a mutator.
  It settled as a mutator.


TODO list for DT::Set, DT::Span, and DT::SpanSet

2004-11-29

- DateTime::SpanSet has no count() method

2004-07-03

- what happens if the recurrence function returns an 'undef' ?
  (the program should die - add tests for this)

- this POD entry is not entirely correct, it should be tested/fixed:

    The callbacks can return C<DateTime::Infinite::Future> and
    C<DateTime::Infinite::Past> objects, in order to define 
    I<bounded recurrences>.
    In this case, both 'next' and 'previous' callbacks must be defined:

- 'truncate' method ?

- add set_time_zone tests to Span & SpanSet 

- add "mutability" tests for DT::Span, DT::SpanSet
  see 02immutable.t

- implement add/subtract in DT::Span, DT::SpanSet
- implement start/end aliases in DT::Set

2004-06-25

- cleanup the examples in POD that use
            return $_[0] if $_[0]->is_infinite;
  and explain when and why to use this.
- add tests for all examples given.

-----------------

- Test for errors, in case the "next/previous" 
  recurrence spec is not followed (detect infinite loop).

  Give a message like:
  "A recurrence loop was detected. Check that you are using
   the latest DateTime::Event module version" 

  Or, try to detect the error and automatically
  "downgrade" DateTime::Set.

  The problem is, the infinite loops happens
  _inside_ next(). There seems to be no way to
  detect this.

- implement set( locale => .. ) in Span and SpanSet

- Add tests for new methods: DateTime::SpanSet::map / grep

- discuss functions like 
    is_infinite
    is_empty 

- implement faster DT::Set::complement(), 
  using 'function composition'

- move all 'set-specific' code to Set::Infinite::_recurrence 
  use accessors instead of structure references

- functions like before(), after(), during() might be useful
  in DT::Span
  or maybe these should be called next(), previous(), current(), closest()

- document better:
  how to transform a Span into an iterator - for example,
  get the list of days in a span

- optimization: rewrite intersection of recurrences 'previous' function

- optimization: extract start_set / end_set right from
  the data structure, if possible.

