
On Jun 18, 2009, at 9:57 AM, Sjoerd Visscher wrote:
This is my first package on Hackage, so any comments are welcome!
It is not only pleasingly elegant but also quite useful: Your Monad and MonadPlus instances lead me to an interesting observation. Various strategies for non-deterministic search can be implemented using FMList by expressing failure and choice via a Monoid instance. I have just finished a revision of a paper that explains how to factor two-continuation based backtracking (and other strategies) into a continuation monad transformer and a type class for non-deterministic computations (I'd be glad to receive comments!). http://www-ps.informatik.uni-kiel.de/~sebf/pub/atps09.html Now I recognise that one can also use FMList as the part that provides return and >>= and any Monoid for failure and choice. Especially, one can implement breadth-first search (bfs) using a monoid that collects levels of a search tree and iterative deepening depth-first search (idfs) using a monoid that represents depth-bounded computations. I have updated my package level-monad to use your library and monoids: http://hackage.haskell.org/package/level-monad The employed Monoid instances do not satisfy any monoid law. However, these are the simplest implementations of bfs and idfs that I am aware of, so I don't care very much ;) Sebastian -- Underestimating the novelty of the future is a time-honored tradition. (D.G.)