Path polymorphism supports operations that need to traverse an arbitrary data structure, e.g. searching or querying. The heart of this approach is to support patterns able to match against any compound data structure.
Pattern polymorphism allows free variables in patterns, so that patterns may be assembled and evaluated dynamically.
Programming with the pattern calculus is the point of the language bondi .
is a monograph on pattern calculus (Springer, August, 2009). Here is a talk with examples in bondi .
Publications on pattern calculus and its precursors include (in chronological order) :

Faculty of Engineering and Information Technology