macaw-base
Safe HaskellNone
LanguageHaskell2010

Data.Macaw.Utils.Changed

Description

This module defines a monad Changed that is designed for supporting functions which take a value of some type as an argument, and may modify it's value.

It is primarily used for abstract domains so that we know if we need to re-explore a block when joining new edges into the state.

Synopsis

Documentation

data Changed s a Source #

A monad that can be used to record when a value is changed.

Instances

Instances details
Applicative (Changed s) Source # 
Instance details

Defined in Data.Macaw.Utils.Changed

Methods

pure :: a -> Changed s a #

(<*>) :: Changed s (a -> b) -> Changed s a -> Changed s b #

liftA2 :: (a -> b -> c) -> Changed s a -> Changed s b -> Changed s c #

(*>) :: Changed s a -> Changed s b -> Changed s b #

(<*) :: Changed s a -> Changed s b -> Changed s a #

Functor (Changed s) Source # 
Instance details

Defined in Data.Macaw.Utils.Changed

Methods

fmap :: (a -> b) -> Changed s a -> Changed s b #

(<$) :: a -> Changed s b -> Changed s a #

Monad (Changed s) Source # 
Instance details

Defined in Data.Macaw.Utils.Changed

Methods

(>>=) :: Changed s a -> (a -> Changed s b) -> Changed s b #

(>>) :: Changed s a -> Changed s b -> Changed s b #

return :: a -> Changed s a #

runChanged :: (forall s. Changed s a) -> Maybe a Source #

Run the changed computation and return the value if changed, and Nothing if not.

markChanged :: Bool -> Changed s () Source #

Record the value has changed if the Boolean is true.

changedST :: ST s a -> Changed s a Source #

Run a ST computation.