Portability | portable |
---|---|

Stability | experimental |

Maintainer | ross@soi.city.ac.uk |

The ListT monad transformer, adding backtracking to a given monad, which must be commutative.

# The ListT monad transformer

Parameterizable list monad, with an inner monad.

*Note:* this does not yield a monad unless the argument monad is commutative.

MonadTrans ListT | |

Monad m => Monad (ListT m) | |

Functor m => Functor (ListT m) | |

Monad m => MonadPlus (ListT m) | |

Applicative m => Applicative (ListT m) | |

Applicative m => Alternative (ListT m) | |

MonadIO m => MonadIO (ListT m) |

# Lifting other operations

liftCallCC :: ((([a] -> m [b]) -> m [a]) -> m [a]) -> ((a -> ListT m b) -> ListT m a) -> ListT m aSource

Lift a `callCC`

operation to the new monad.