On a number of occasions we have received requests for implementations of the Functors (Predicate, Transformer, Closure and Factory). These implementations now exist in [lang], however they implement the [lang] version of the interfaces, not the [collections] version. This problem must be solved. I am prepared to do the work, but this requires a plan and a vote. That way we can hopefully avoid the kind of continual reopening of this issue that has happened. This mail aims to get opinions before moving to a vote.
Solution #1 Move functor code from [lang] to [collections]. + [collections] does not depend on [lang] - You can want to use a Functor without wanting [collections], for example [io] - Causes problems if [lang] wants to use a functor Solution #2 [collections] depends on [lang], with the collections interfaces deprecated in favour of the lang ones. + [collections] focuses on collections only, not functors + functors in [lang] makes them available to other projects like [io] easily - [collections] depends on [lang] - functors provoke debate as to whether they should be in [lang] Solution #3 [functor] project, that contains the functor interfaces, implementations and CollectionUtils implementations, with the collections interfaces and CollectionUtils code deprecated in favour of the functor ones. + all functor code is together, all collections code is together. Tight scope + [collections] does not depend on [lang] + [functor does not depend on [collections], which is better for [io] etc. - [functor] depends on [lang] - Functor users, like [io], need to depend on [functor] and [lang] - Causes problems if [lang] wants to use a functor Solution #4 (Tried and failed) [pattern] project that contains the functor interfaces and implementations This failed because: a) [collections] was asked to depend on [pattern] and [lang] b) [pattern] was too braodly scoped c) [pattern] was badly named Solution #5 (Included, for completeness) Duplicate the functor implementations in [lang] and [collections] - This sucks #1 is the simplest choice, but messes up other projects who want to use functors without collections #2 is a simple choice, but requires [collections] to depend on [lang] and people to be comfortable the functors should be in [lang]. #3 requires more initial effort, but does result in more tightly defined components. I am prepared to implement #1, #2 or #3 to get this sorted finally. Or are there any other options I haven't thought of? Stephen -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>