clash-lib-0.2.0.1: CAES Language for Synchronous Hardware - As a Library

Safe HaskellNone

CLaSH.Rewrite.Combinators

Description

Rewriting combinators and traversals

Synopsis

Documentation

allRSource

Arguments

:: forall m . (Functor m, Monad m, Fresh m) 
=> Bool

Freshen variable references in abstracted terms

-> Transform m

The transformation to apply to the subtrees

-> Transform m 

Apply a transformation on the subtrees of an term

(>->) :: Monad m => Transform m -> Transform m -> Transform mSource

Apply two transformations in succession

topdownR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform mSource

Apply a transformation in a topdown traversal

unsafeTopdownR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform mSource

Apply a transformation in a topdown traversal. Doesn't freshen bound variables

bottomupR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform mSource

Apply a transformation in a bottomup traversal

unsafeBottomupR :: (Fresh m, Functor m, Monad m) => Transform m -> Transform mSource

Apply a transformation in a bottomup traversal. Doesn't freshen bound variables

upDownR :: (Functor m, Monad m) => Rewrite m -> Rewrite mSource

Apply a transformation in a bottomup traversal, when a transformation succeeds in a certain node, apply the transformation further in a topdown traversal starting at that node.

unsafeUpDownR :: (Functor m, Monad m) => Rewrite m -> Rewrite mSource

Apply a transformation in a bottomup traversal, when a transformation succeeds in a certain node, apply the transformation further in a topdown traversal starting at that node. Doesn't freshen bound variables

(!->) :: Monad m => Rewrite m -> Rewrite m -> Rewrite mSource

Only apply the second transformation if the first one succeeds.

repeatR :: Monad m => Rewrite m -> Rewrite mSource

Keep applying a transformation until it fails.