Algebraic specialization of generic functions for recursive types - Cunha, Alcino (2011)