Module FlatCurry.Transform.ExecDet

Author
Michael Hanus, Steven Libby
Version
August 2025

Implementation of transforming FlatCurry expressions by applying deterministically defined expressions transformations as long as possible.

Exported Functions


transformExprDet :: ((Int, [Int]) -> Expr -> Maybe (Expr, String, Int)) -> Int -> Expr -> Expr  Deterministic 

Simplifies an expression according to some expression transformation. Since the expression transformation can be non-deterministically defined, we pass it as a function which is similarly to passing it via run-time choice. The second argument is the maximum number of transformation steps to be applied. If the number is -1, then keep going until no transformation can be applied.


showTransformExprDet :: ((Int, [Int]) -> Expr -> Maybe (Expr, String, Int)) -> Int -> Expr -> (Expr, String, Int)  Deterministic