@hackage edit0.0.1.1

A monad for rewriting things.

Edit Hackage badge

The Edit monad allows you to easily bubble up whether a change was made or not when rewriting things. Some cases where this can be handy:

  1. You are making a sequence of transformations on some type and want to keep track of whether any of them changed it or not.
  2. You are rewriting a recursive type and want to bubble up information whether something was changed or not.

A small example:

>>> halveEvens x = if x `mod` 2 == 0 then (Dirty $ x `div` 2) else (Clean x)
>>> traverse halveEvens [1, 2, 3]
Dirty [1,1,3]
>>> traverse halveEvens [1, 3, 5]
Clean [1,3,5]

More thorough documentation is available on Hackage under the Data.Edit module. There is a tutorial too under Data.Edit.Tutorial.

There is also a corresponding monad transformer EditT available under Control.Monad.Trans.EditT.

Contributing

Please open an issue on the Github issue tracker to discuss missing documentation, API changes etc.

  • Installation

  • Dependencies (0)

  • Dependents (1)

    @hackage/acme-everything
  • Package Flags

      arbitrary_instance
       (off by default)

      Adds QuickCheck as a dependency to provide an Arbitrary instance.

      comonad_instance
       (off by default)

      Adds comonad as a dependency to provide a Comonad instance.

      tutorial
       (off by default)

      Build the tutorial. Adds dependencies on uniplate and containers.