Monadically traversable containers


Travesty is a library for defining containers with monadic traversals, inspired by Haskell's Traversable typeclass. It sits on top of Jane Street's Core library ecosystem.

As well as monadic traversals, Travesty includes various other extensions on top of Core. These focus on making a more 'purely functional', Haskell-esque style of programming easier, though with a focus on pragmatism over mathematical purity.

Other similar libraries

  • The BAP monads library also contains implementations of monadic traversals, as well as several of Travesty's other extensions.

Traversal interfaces

Travesty's main contribution is the Traversable module, which implements monadic traversal. It also includes a Mappable module, which adds various bits of support for mappable containers (what Haskell would call 'functors').

State monads

Travesty also contains implementations of state monads (State) and transformers (State_transform). These are mainly used to implement fold-mapping and folding on top of Traversable, but we expose them for general consumption.


Travesty also contains extensions to various Core modules and module signatures. These generally carry a T_ prefix, so that they don't clash with Core modules if Travesty is opened globally.

Signature expansions
Implementation expansions