clash-lib-1.6.4: Clash: a functional hardware description language - As a library
Copyright(C) 2012-2016 University of Twente
2021 QBayLogic B.V.
LicenseBSD2 (see the file LICENSE)
MaintainerQBayLogic B.V. <devops@qbaylogic.com>
Safe HaskellNone
LanguageHaskell2010

Clash.Rewrite.Combinators

Description

Rewriting combinators and traversals

Synopsis

Documentation

allR Source #

Arguments

:: forall m. Monad m 
=> Transform m

The transformation to apply to the subtrees

-> Transform m 

Apply a transformation on the subtrees of an term

(!->) :: Rewrite m -> Rewrite m -> Rewrite m infixr 5 Source #

Only apply the second transformation if the first one succeeds.

(>-!) :: Rewrite m -> Rewrite m -> Rewrite m infixr 5 Source #

Only apply the second transformation if the first one fails.

(>-!->) :: Monad m => Transform m -> Transform m -> Transform m infixr 6 Source #

Apply two transformations in succession, and perform a deepseq in between.

(>->) :: Monad m => Transform m -> Transform m -> Transform m infixr 6 Source #

Apply two transformations in succession

bottomupR :: Monad m => Transform m -> Transform m Source #

Apply a transformation in a bottomup traversal

repeatR :: Rewrite m -> Rewrite m Source #

Keep applying a transformation until it fails.

topdownR :: Rewrite m -> Rewrite m Source #

Apply a transformation in a topdown traversal