plutus-core-1.66.0.0: Language library for Plutus Core
Safe HaskellSafe-Inferred
LanguageHaskell2010

PlutusIR.Transform.CollapseCase

Description

A top-down pass converting 2 or more consecutive casing on lists, if the heads are all unused, and the tails are all unused except for being immediately matched on.

Example:

case xs of _h1 t1 -> case t1 of _h2 t2 -> case t2 of _h3 t3 -> case t3 of _h4 t4 -> case t4 of h5 t5 -> ...t5...

>

case (drop 4 xs) of h5 t5 -> ...t5...

Documentation

collapseCase ∷ ∀ name uni fun a. (uni ~ DefaultUni, fun ~ DefaultFun, HasUnique name TermUnique, AnnCase a) ⇒ Term TyName name uni fun a → Term TyName name uni fun a Source #

collapseCasePassSC ∷ (uni ~ DefaultUni, fun ~ DefaultFun, Applicative m, AnnCase a) ⇒ PirTCConfig uni fun → Pass m TyName Name uni fun a Source #