The universal API for generic non-empty collections, with examples in C# and Haskell. This article explores the concept of catamorphisms and how they can be used to digest data structures into potentially more compact values. It walks through the implementation of a NonEmptyCollection class in C# and demonstrates various use cases for the Aggregate method. The article also includes examples in Haskell for readers not familiar with the language. Overall, it provides a comprehensive guide to understanding and leveraging catamorphisms in programming.