Representing common recursion patterns as higher-order functions| Hackage
When using types, one often asks the question: when are two types| Ryan Scott