Safe Haskell | None |
---|
- class Fixable a where
- data Value a
- data Rule
- data Fixer
- addRule :: MonadIO m => Rule -> m ()
- ioToRule :: IO () -> Rule
- conditionalRule :: Fixable a => (a -> Bool) -> Value a -> Rule -> Rule
- dynamicRule :: Fixable a => Value a -> (a -> Rule) -> Rule
- findFixpoint :: MonadIO m => Maybe (String, Handle) -> Fixer -> m ()
- calcFixpoint :: MonadIO m => String -> Fixer -> m ()
- isSuperSetOf :: Fixable a => Value a -> Value a -> Rule
- modifiedSuperSetOf :: (Fixable a, Fixable b) => Value b -> Value a -> (a -> b) -> Rule
- newFixer :: MonadIO m => m Fixer
- ioValue :: IO (Value a) -> Value a
- newValue :: (MonadIO m, Fixable a) => Fixer -> a -> m (Value a)
- readValue :: (Fixable a, MonadIO m) => Value a -> m a
- readRawValue :: (Fixable a, MonadIO m) => Value a -> m a
- value :: a -> Value a
Documentation
Fixable class, must satisfy the following rules
isBottom bottom == True
x lub
x == x
x lub
y == y lub
x
x lub
bottom == x
x minus
bottom == x
bottom minus
x == bottom
x minus
y == z --> y lub
z == x
showFixable :: a -> StringSource
conditionalRule :: Fixable a => (a -> Bool) -> Value a -> Rule -> RuleSource
the function must satisfy the rule that if a >= b then f(a) implies f(b)
findFixpoint :: MonadIO m => Maybe (String, Handle) -> Fixer -> m ()Source
find fixpoint, perhaps printing debugging information to specified handle. will not print anything if no calculation needed.
calcFixpoint :: MonadIO m => String -> Fixer -> m ()Source
modifiedSuperSetOf :: (Fixable a, Fixable b) => Value b -> Value a -> (a -> b) -> RuleSource
the function must satisfy the rule that if a >= b then f(a) >= f(b)
readValue :: (Fixable a, MonadIO m) => Value a -> m aSource
read result, calculating fixpoint if needed
readRawValue :: (Fixable a, MonadIO m) => Value a -> m aSource