Utilities for more productive basics
Non-empty collections
Working with collections with at least one element
Collectors
Better aggregation over sequences
Recursive functions
Making functions stack-safe and efficient
Memoization
Avoiding duplicate work for pure functions
Control over evaluation
Delaying computation and caching results
Utilities for functions
Composition, partial application, and currying