Hi,

trying to put it all together (thanks James, Matthew):

  * Weighted<W>  is fully generic without restrictions on the type of
   weight W
  * different properties of weights are specified with interfaces: e.g.
   Summable, HasZero, Comparable...
  * each algorithm requires the weights to implement one or more of the
   above interfaces based on needs, and only works with related methods
   abstracting from the actual type of weight. For example sum(W
   weight) for Summable.
this is interesting - at a first read looked like an over engineered
layer, but it perfectly model the weight domain... can you provide a
patch containing such classes and see them in action in current
implemented algos?

of course I can, hopefully later this week.
And you're right, it sounds over-engineered. But it also gives much more freedom to the end user, so maybe in the future someone could say "thanks" ;)

Now, IFF you like that... what shall we do with Double, Integer, etc?
uhm I think we can get rid of them, this is something depending on the
domain in which algorithms are applied.

Well, ideally the user should be able to use seamlessly all the wrappers for primitive number types: i.e., a graph with edges that implement Weighted<Double> should just work the way it is as an input for Dijkstra. But of course Double & co are "legacy" that have nothing to do with our fresh interfaces (Summable & co). So there are at least two alternatives:

 * The user has to wrap primitive types into classes that implement the
   appropriate interfaces, in order to "speak the same language" of the
   algorithm implementations. Some of these classes could of course be
   provided in the library (e.g. DoubleWeight, IntegerWeight).
 * The algorithms offer additional signatures for the same method that
   are "legacy-compatible" to some extent (e.g. only for Double and
   Integer), and then take care of the conversion internally.

I would go for the second one, because 'ignorance is bliss' for the user :)

Comments?

Claudio


Looking forward to hear from you soon!
-Simo

http://people.apache.org/~simonetripodi/
http://simonetripodi.livejournal.com/
http://twitter.com/simonetripodi
http://www.99soft.org/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org


--
Claudio Squarcella
PhD student at Roma Tre University
E-mail address: squar...@dia.uniroma3.it
Phone: +39-06-57333215
Fax: +39-06-57333612
http://www.dia.uniroma3.it/~squarcel


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to