Algorithms for functional programming.