tools for functional programming.