{-# LANGUAGE ConstraintKinds #-}
module PlutusCore.Compiler.Types where
import Data.Hashable
import PlutusCore.Builtin
import PlutusCore.Name.Unique
import PlutusCore.Quote
import UntypedPlutusCore.Core.Type qualified as UPLC
newtype UPLCSimplifierTrace name uni fun a =
UPLCSimplifierTrace
{ forall name (uni :: * -> *) fun a.
UPLCSimplifierTrace name uni fun a -> [Term name uni fun a]
uplcSimplifierTrace
:: [UPLC.Term name uni fun a]
}
initUPLCSimplifierTrace :: UPLCSimplifierTrace name uni fun a
initUPLCSimplifierTrace :: forall name (uni :: * -> *) fun a.
UPLCSimplifierTrace name uni fun a
initUPLCSimplifierTrace = [Term name uni fun a] -> UPLCSimplifierTrace name uni fun a
forall name (uni :: * -> *) fun a.
[Term name uni fun a] -> UPLCSimplifierTrace name uni fun a
UPLCSimplifierTrace []
type Compiling m uni fun name a =
( ToBuiltinMeaning uni fun
, MonadQuote m
, HasUnique name TermUnique
, Ord name
, Typeable name
, Hashable fun
)