{-# LANGUAGE LambdaCase #-} module UntypedPlutusCore.Transform.ForceDelay ( forceDelayCancel ) where import UntypedPlutusCore.Core import Control.Lens (transformOf) forceDelayCancel :: Term name uni fun a -> Term name uni fun a forceDelayCancel :: Term name uni fun a -> Term name uni fun a forceDelayCancel = ASetter (Term name uni fun a) (Term name uni fun a) (Term name uni fun a) (Term name uni fun a) -> (Term name uni fun a -> Term name uni fun a) -> Term name uni fun a -> Term name uni fun a forall a b. ASetter a b a b -> (b -> b) -> a -> b transformOf ASetter (Term name uni fun a) (Term name uni fun a) (Term name uni fun a) (Term name uni fun a) forall name (uni :: * -> *) fun ann. Traversal' (Term name uni fun ann) (Term name uni fun ann) termSubterms Term name uni fun a -> Term name uni fun a forall name (uni :: * -> *) fun a. Term name uni fun a -> Term name uni fun a processTerm processTerm :: Term name uni fun a -> Term name uni fun a processTerm :: Term name uni fun a -> Term name uni fun a processTerm = \case Force a _ (Delay a _ Term name uni fun a t) -> Term name uni fun a t Term name uni fun a t -> Term name uni fun a t