Difference between revisions of "Combinator pattern"

From HaskellWiki
Jump to navigation Jump to search
(Somebody who knows stuff should check this...)
(No difference)

Revision as of 20:26, 12 March 2007


Libraries such as Parsec use the combinator pattern, where complex structures are built by defining a small set of very simple 'primitives', and a set of 'combinators' for combining them into more complicated structures. It's somewhat similar to the Composition pattern found in object-oriented programming.

In the case of the Parsec, the library provides a set of extremely simple (almost trivial) parsers, and ways to combine small parsers into bigger parsers. Many other libraries and programs use the same ideas to build other structures:

  • Parsec builds parsers out of smaller parsers.
  • The School of Expression (SOE) graphics library builds pictures out of individual shapes.
  • The SOE book also mentions a library to build music out of individual notes and rests.
  • Another textbook describes building financial contracts.
  • [Software transactional memory] builds big transactions out of smaller ones.
  • The Haskell IO system itself builds whole programs out of small I/O actions using >>= and return.