New monads

From HaskellWiki
Revision as of 23:25, 24 August 2006 by ChrisKuklewicz (talk | contribs) (Move over many pages from old wiki and add LazyWriterT)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

MonadBase

It seems that the liftIO function from MonadIO can be generalized to access whatever the base of a transformer stack happens to be. So there is no need for a liftSTM, liftST, etc.

View NewMonads/MonadBase.

MonadLib

This is by Iavor S. Diatchki and can be found at http://www.cse.ogi.edu/~diatchki/monadLib/

It is a new version of the mtl package with transformers: ReaderT WriterT StateT ExceptT SearchT ContT

It also defines BaseM which is like MonadBase above.

LazyWriterT

This came up on the mailing list: Why is WriterT never lazy? The answer is it does not use lazy patterns with "~". So here is a more useful NewMonads/LazyWriterT that add two "~" to the definition of (>>=) and renames WriterT to LazyWriterT.

MonadRandom

A simple monad transformer to allow computations in the transformed monad to generate random values.

View NewMonads/MonadRandom.

MonadSupply

Here is a simple monad/monad transformer for computations which consume values from a (finite or infinite) supply. Note that due to pattern matching, running out of supply in a non-MonadZero monad will cause an error.

View NewMonads/MonadSupply.

MonadUndo

Here is a modified state monad transformer for keeping track of undo/redo states automatically.

View NewMonads/MonadUndo.

MonadUnique

This is a simple (trivial) monad transformer for supplying unique integer values to an algorithm.

View NewMonads/MonadUnique.