Dear Patrik: I enjoyed browsing through the ideas in your paper: "PolyP - a polytypic programming language extension" http://www.cs.chalmers.se/~patrikj/poly/polypabstract.html and I have the following observations: 1. Both the Polytypic team and the Adaptive team promote the same idea: Programming language constructs to write programs which can operate on vastly different data types. I believe this is a very useful idea. 2. The Polytypic team presents their approach more for the functional programming community. The Adaptive team presents their approach for the oo programming community. 3. It seems to me that the Polytypic work can benefit from the concept of strategies for better high-level control. http://www.ccs.neu.edu/research/demeter/biblio/strategies.html From the above paper: "PolyP - a polytypic programming language extension" Consider the two functions: length :: List a -> Int // counts number of occurrences of a in list length :: Tree a -> Int // counts number of occurrences of a in tree In polytypic programming we can generalise these two functions into a single function which is not only polymorphic in type a, but also in the type constructor: length :: d a -> Int where d ranges over type constructors. Now suppose we want to count only the occurrences of a which are inside of occurrences of x. We would like to write a polytypic function like: length :: d a -> Int {via x to a} where d ranges over type constructors using x and a. length is undefined if the actual parameter for d does not use x and a and there is no "path" from the current type through x to a. 4. We are currently working on visitors and adjusters which are parameterized by strategies. They are polytypic components which can be composed and maybe the polytypic framework you have can be used to formalize elegantly visitors and adjusters. I was wondering how the ideas in PolyP can be best applied to oo languages, like Java. -- Karl