Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
An inlining pass of *non-recursive* bindings. It includes
(1) unconditional inlining: similar to PreInlineUnconditionally
and PostInlineUnconditionally
in the paper 'Secrets of the GHC Inliner'.
(2) call site inlining of fully applied functions. See hs
Synopsis
- inline ∷ ∀ tyname name uni fun ann m. ExternalConstraints tyname name uni fun m ⇒ Bool → InlineHints name ann → BuiltinsInfo uni fun → Term tyname name uni fun ann → m (Term tyname name uni fun ann)
- inlinePass ∷ ∀ uni fun ann m. (Typecheckable uni fun, GEq uni, Ord ann, ExternalConstraints TyName Name uni fun m) ⇒ Bool → PirTCConfig uni fun → InlineHints Name ann → BuiltinsInfo uni fun → Pass m TyName Name uni fun ann
- inlinePassSC ∷ ∀ uni fun ann m. (Typecheckable uni fun, GEq uni, Ord ann, ExternalConstraints TyName Name uni fun m) ⇒ Bool → PirTCConfig uni fun → InlineHints Name ann → BuiltinsInfo uni fun → Pass m TyName Name uni fun ann
- newtype InlineHints name a = InlineHints {
- shouldInline ∷ a → name → Bool
Documentation
∷ ∀ tyname name uni fun ann m. ExternalConstraints tyname name uni fun m | |
⇒ Bool | should we inline constants? |
→ InlineHints name ann | |
→ BuiltinsInfo uni fun | |
→ Term tyname name uni fun ann | |
→ m (Term tyname name uni fun ann) |
Inline non-recursive bindings. Relies on global uniqueness, and preserves it. See Note [Inlining and global uniqueness]
∷ ∀ uni fun ann m. (Typecheckable uni fun, GEq uni, Ord ann, ExternalConstraints TyName Name uni fun m) | |
⇒ Bool | should we inline constants? |
→ PirTCConfig uni fun | |
→ InlineHints Name ann | |
→ BuiltinsInfo uni fun | |
→ Pass m TyName Name uni fun ann |
∷ ∀ uni fun ann m. (Typecheckable uni fun, GEq uni, Ord ann, ExternalConstraints TyName Name uni fun m) | |
⇒ Bool | should we inline constants? |
→ PirTCConfig uni fun | |
→ InlineHints Name ann | |
→ BuiltinsInfo uni fun | |
→ Pass m TyName Name uni fun ann |
newtype InlineHints name a Source #
InlineHints | |
|
Instances
Monoid (InlineHints name a) | |
Defined in PlutusCore.Annotation mempty ∷ InlineHints name a Source # mappend ∷ InlineHints name a → InlineHints name a → InlineHints name a Source # mconcat ∷ [InlineHints name a] → InlineHints name a Source # | |
Semigroup (InlineHints name a) | |
Defined in PlutusCore.Annotation (<>) ∷ InlineHints name a → InlineHints name a → InlineHints name a Source # sconcat ∷ NonEmpty (InlineHints name a) → InlineHints name a Source # stimes ∷ Integral b ⇒ b → InlineHints name a → InlineHints name a Source # | |
Show (InlineHints name a) | |
Defined in PlutusCore.Annotation |