from Wiktionary, Creative Commons Attribution/Share-Alike License

  • n. a generalization of the folds on lists known from functional programming to arbitrary abstract data types that can be described as initial algebras


From cata- +‎ morphism. (Wiktionary)


  • Seeing the elements of a sequence being eaten one-by-one is quite a shocking catastrophic event for the sequence, hence the name catamorphism .

    B# .NET Technical Community Homepage

  • Use of the terms "catamorphism" or "monad" or "partial application" or "currying" in your introductory talk is an exercise in stroking your own ego …. what's new online!

  • To answer this question, we first have to understand what a catamorphism is.

    Planet Haskell

  • The point of the catamorphism is that this doesn't need to apply just to lists; in fact, we can run a catamorphism on any recursive data structure!

    Planet Haskell

  • The functional programming crowd is well familiar with a few relatively banal examples of the catamorphism, namely the left fold and the right fold.

    Planet Haskell

  • But this didn't really seem to fit right: maybe you have a clever catamorphism for the problem, the overhead for fully parallelizing everything is prohibitive.

    Planet Haskell

  • The opposite of an anamorphism is a catamorphism, also known as Aggregate in LINQ.

    B# .NET Technical Community Homepage

  • And finally, there's a stop condition which is implicit in the case of a catamorphism as the "remaining tail of sequence is empty" condition can be used for it

    B# .NET Technical Community Homepage

  • I previously wrote about a design pattern I called an incremental fold (or catamorphism).

    Planet Haskell

  • In the absence of an appropriate predefined combinator (i.e. loop, or a catamorphism), it is really better to write your own combinators rather than employing recursion in lower-order functions.


Wordnik is becoming a not-for-profit! Read our announcement here.


Log in or sign up to get involved in the conversation. It's quick and easy.