Copyright | (c) Sebastian Graf 2017-2020 |
---|---|

License | ISC |

Maintainer | sgraf1337@gmail.com |

Portability | portable |

Safe Haskell | None |

Language | Haskell2010 |

Bridges the Datafix.Worklist solver for `DataFlowFramework`

s (`solveProblem`

)
with the Datafix.Denotational approach, using `MonadDatafix`

to describe
a `Denotation`

.

## Synopsis

- evalDenotation :: forall domain func. Datafixable domain => Forall (Currying (ParamTypes func)) => Denotation domain func -> IterationBound domain -> func

# Documentation

:: Datafixable domain | |

=> Forall (Currying (ParamTypes func)) | |

=> Denotation domain func | A build plan for computing the denotation, possibly involving
fixed-point iteration factored through calls to |

-> IterationBound domain | Whether the solution algorithm should respect a maximum bound on the
number of iterations per point. Pass |

-> func |

`evalDenotation denot ib`

returns a value in `domain`

that is described by
the denotation `denot`

.

It does so by building up the `DataFlowFramework`

corresponding to `denot`

and solving the resulting problem with `solveProblem`

, the documentation of
which describes in detail how to arrive at a stable denotation and what
the `IterationBound`

`ib`

, domain ~ Domain (DepM m) is for.