Generic recursion schemes for working with recursively defined data structures
Functions for working with recursive data structures