Funkr brings some common functional programming constructs to ruby. In particular, it offers a simple mechanism to create Algebraic Data Types and do pattern matching on them. For an exemple implementation, see provided classes. It also provide modules for common categories (Monoid, Monad, Functor, Applicative ...), and extends common types to support categories they belongs to (Array, Hash ...). Categories can also be used with custom types, see provided classes. To get started, we recommand you to read the tests, and get feets wet with provided Algebraic Data Types (like Maybe). Funkr is heavily used by its authors in production at http://www.atikteam.com/en to ensure better code reliability.