{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -O0 #-}
module PlutusCore.Evaluation.Machine.BuiltinCostModel
( BuiltinCostModel
, BuiltinCostModelBase (..)
, CostingFun (..)
, UnimplementedCostingFun (..)
, Intercept (..)
, Slope (..)
, Coefficient0 (..)
, Coefficient1 (..)
, Coefficient2 (..)
, Coefficient00 (..)
, Coefficient10 (..)
, Coefficient01 (..)
, Coefficient20 (..)
, Coefficient11 (..)
, Coefficient02 (..)
, Coefficient12 (..)
, OneVariableLinearFunction (..)
, OneVariableQuadraticFunction (..)
, TwoVariableLinearFunction (..)
, TwoVariableQuadraticFunction (..)
, TwoVariableWithInteractionFunction (..)
, ExpModCostingFunction (..)
, ModelSubtractedSizes (..)
, ModelConstantOrOneArgument (..)
, ModelConstantOrTwoArguments (..)
, ModelConstantOrLinear (..)
, ModelOneArgument (..)
, ModelTwoArguments (..)
, ModelThreeArguments (..)
, ModelFourArguments (..)
, ModelFiveArguments (..)
, ModelSixArguments (..)
, runCostingFunOneArgument
, runCostingFunTwoArguments
, runCostingFunThreeArguments
, runCostingFunFourArguments
, runCostingFunFiveArguments
, runCostingFunSixArguments
, Hashable
, MCostingFun (..)
)
where
import PlutusPrelude hiding (toList)
import PlutusCore.Evaluation.Machine.CostingFun.Core
import PlutusCore.Evaluation.Machine.CostingFun.JSON ()
import Barbies
import Data.Aeson
import Data.Kind qualified as Kind
import Data.List (stripPrefix)
import Data.Monoid
import Language.Haskell.TH.Syntax hiding (Name, newName)
type BuiltinCostModel = BuiltinCostModelBase CostingFun
data BuiltinCostModelBase f
= BuiltinCostModelBase
{
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramAddInteger :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramSubtractInteger :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramMultiplyInteger :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramDivideInteger :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramQuotientInteger :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramRemainderInteger :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramModInteger :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramEqualsInteger :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramLessThanInteger :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramLessThanEqualsInteger :: f ModelTwoArguments
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramAppendByteString :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramConsByteString :: f ModelTwoArguments
, forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramSliceByteString :: f ModelThreeArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramLengthOfByteString :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramIndexByteString :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramEqualsByteString :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramLessThanByteString :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramLessThanEqualsByteString :: f ModelTwoArguments
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramSha2_256 :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramSha3_256 :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramBlake2b_256 :: f ModelOneArgument
, forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramVerifyEd25519Signature :: f ModelThreeArguments
, forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramVerifyEcdsaSecp256k1Signature :: f ModelThreeArguments
, forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramVerifySchnorrSecp256k1Signature :: f ModelThreeArguments
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramAppendString :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramEqualsString :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramEncodeUtf8 :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramDecodeUtf8 :: f ModelOneArgument
,
forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramIfThenElse :: f ModelThreeArguments
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramChooseUnit :: f ModelTwoArguments
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramTrace :: f ModelTwoArguments
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramFstPair :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramSndPair :: f ModelOneArgument
,
forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramChooseList :: f ModelThreeArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramMkCons :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramHeadList :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramTailList :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramNullList :: f ModelOneArgument
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelSixArguments
paramChooseData :: f ModelSixArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramConstrData :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramMapData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramListData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramIData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramBData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramUnConstrData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramUnMapData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramUnListData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramUnIData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramUnBData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramEqualsData :: f ModelTwoArguments
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramMkPairData :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramMkNilData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramMkNilPairData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramSerialiseData :: f ModelOneArgument
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_G1_add :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramBls12_381_G1_neg :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_G1_scalarMul :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_G1_multiScalarMul :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_G1_equal :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramBls12_381_G1_compress :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramBls12_381_G1_uncompress :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_G1_hashToGroup :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_G2_add :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramBls12_381_G2_neg :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_G2_scalarMul :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_G2_equal :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_G2_multiScalarMul :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramBls12_381_G2_compress :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramBls12_381_G2_uncompress :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_G2_hashToGroup :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_millerLoop :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_mulMlResult :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramBls12_381_finalVerify :: f ModelTwoArguments
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramKeccak_256 :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramBlake2b_224 :: f ModelOneArgument
,
forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramIntegerToByteString :: f ModelThreeArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramByteStringToInteger :: f ModelTwoArguments
, forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramAndByteString :: f ModelThreeArguments
, forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramOrByteString :: f ModelThreeArguments
, forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramXorByteString :: f ModelThreeArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramComplementByteString :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramReadBit :: f ModelTwoArguments
, forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramWriteBits :: f ModelThreeArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramReplicateByte :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramShiftByteString :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramRotateByteString :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramCountSetBits :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramFindFirstSetBit :: f ModelOneArgument
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramRipemd_160 :: f ModelOneArgument
,
forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramExpModInteger :: f ModelThreeArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramDropList :: f ModelTwoArguments
,
forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramLengthOfArray :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramListToArray :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramIndexArray :: f ModelTwoArguments
,
forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelThreeArguments
paramLookupCoin :: f ModelThreeArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramValueContains :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramValueData :: f ModelOneArgument
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelOneArgument
paramUnValueData :: f ModelOneArgument
, forall (f :: * -> *).
BuiltinCostModelBase f -> f ModelFourArguments
paramInsertCoin :: f ModelFourArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramUnionValue :: f ModelTwoArguments
, forall (f :: * -> *). BuiltinCostModelBase f -> f ModelTwoArguments
paramScaleValue :: f ModelTwoArguments
}
deriving stock ((forall x.
BuiltinCostModelBase f -> Rep (BuiltinCostModelBase f) x)
-> (forall x.
Rep (BuiltinCostModelBase f) x -> BuiltinCostModelBase f)
-> Generic (BuiltinCostModelBase f)
forall x. Rep (BuiltinCostModelBase f) x -> BuiltinCostModelBase f
forall x. BuiltinCostModelBase f -> Rep (BuiltinCostModelBase f) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall (f :: * -> *) x.
Rep (BuiltinCostModelBase f) x -> BuiltinCostModelBase f
forall (f :: * -> *) x.
BuiltinCostModelBase f -> Rep (BuiltinCostModelBase f) x
$cfrom :: forall (f :: * -> *) x.
BuiltinCostModelBase f -> Rep (BuiltinCostModelBase f) x
from :: forall x. BuiltinCostModelBase f -> Rep (BuiltinCostModelBase f) x
$cto :: forall (f :: * -> *) x.
Rep (BuiltinCostModelBase f) x -> BuiltinCostModelBase f
to :: forall x. Rep (BuiltinCostModelBase f) x -> BuiltinCostModelBase f
Generic)
deriving anyclass ((forall (f :: * -> *) (g :: * -> *).
(forall a. f a -> g a)
-> BuiltinCostModelBase f -> BuiltinCostModelBase g)
-> FunctorB BuiltinCostModelBase
forall k (b :: (k -> *) -> *).
(forall (f :: k -> *) (g :: k -> *).
(forall (a :: k). f a -> g a) -> b f -> b g)
-> FunctorB b
forall (f :: * -> *) (g :: * -> *).
(forall a. f a -> g a)
-> BuiltinCostModelBase f -> BuiltinCostModelBase g
$cbmap :: forall (f :: * -> *) (g :: * -> *).
(forall a. f a -> g a)
-> BuiltinCostModelBase f -> BuiltinCostModelBase g
bmap :: forall (f :: * -> *) (g :: * -> *).
(forall a. f a -> g a)
-> BuiltinCostModelBase f -> BuiltinCostModelBase g
FunctorB, FunctorB BuiltinCostModelBase
FunctorB BuiltinCostModelBase =>
(forall (e :: * -> *) (f :: * -> *) (g :: * -> *).
Applicative e =>
(forall a. f a -> e (g a))
-> BuiltinCostModelBase f -> e (BuiltinCostModelBase g))
-> TraversableB BuiltinCostModelBase
forall k (b :: (k -> *) -> *).
FunctorB b =>
(forall (e :: * -> *) (f :: k -> *) (g :: k -> *).
Applicative e =>
(forall (a :: k). f a -> e (g a)) -> b f -> e (b g))
-> TraversableB b
forall (e :: * -> *) (f :: * -> *) (g :: * -> *).
Applicative e =>
(forall a. f a -> e (g a))
-> BuiltinCostModelBase f -> e (BuiltinCostModelBase g)
$cbtraverse :: forall (e :: * -> *) (f :: * -> *) (g :: * -> *).
Applicative e =>
(forall a. f a -> e (g a))
-> BuiltinCostModelBase f -> e (BuiltinCostModelBase g)
btraverse :: forall (e :: * -> *) (f :: * -> *) (g :: * -> *).
Applicative e =>
(forall a. f a -> e (g a))
-> BuiltinCostModelBase f -> e (BuiltinCostModelBase g)
TraversableB, FunctorB BuiltinCostModelBase
FunctorB BuiltinCostModelBase =>
(forall (c :: * -> Constraint) (f :: * -> *).
AllB c BuiltinCostModelBase =>
BuiltinCostModelBase f
-> BuiltinCostModelBase (Product (Dict c) f))
-> ConstraintsB BuiltinCostModelBase
forall k (b :: (k -> *) -> *).
FunctorB b =>
(forall (c :: k -> Constraint) (f :: k -> *).
AllB c b =>
b f -> b (Product (Dict c) f))
-> ConstraintsB b
forall (c :: * -> Constraint) (f :: * -> *).
AllB c BuiltinCostModelBase =>
BuiltinCostModelBase f -> BuiltinCostModelBase (Product (Dict c) f)
$cbaddDicts :: forall (c :: * -> Constraint) (f :: * -> *).
AllB c BuiltinCostModelBase =>
BuiltinCostModelBase f -> BuiltinCostModelBase (Product (Dict c) f)
baddDicts :: forall (c :: * -> Constraint) (f :: * -> *).
AllB c BuiltinCostModelBase =>
BuiltinCostModelBase f -> BuiltinCostModelBase (Product (Dict c) f)
ConstraintsB)
builtinCostModelOptions :: Options
builtinCostModelOptions :: Options
builtinCostModelOptions =
Options
defaultOptions {fieldLabelModifier = lowerInitialChar . dropPrefix "param"}
where
dropPrefix :: [a] -> [a] -> [a]
dropPrefix [a]
prefix [a]
s = [a] -> Maybe [a] -> [a]
forall a. a -> Maybe a -> a
fromMaybe [a]
s ([a] -> [a] -> Maybe [a]
forall a. Eq a => [a] -> [a] -> Maybe [a]
stripPrefix [a]
prefix [a]
s)
instance ToJSON (BuiltinCostModelBase CostingFun) where
toJSON :: BuiltinCostModelBase CostingFun -> Value
toJSON = Options -> BuiltinCostModelBase CostingFun -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
builtinCostModelOptions
toEncoding :: BuiltinCostModelBase CostingFun -> Encoding
toEncoding = Options -> BuiltinCostModelBase CostingFun -> Encoding
forall a.
(Generic a, GToJSON' Encoding Zero (Rep a)) =>
Options -> a -> Encoding
genericToEncoding Options
builtinCostModelOptions
instance FromJSON (BuiltinCostModelBase CostingFun) where
parseJSON :: Value -> Parser (BuiltinCostModelBase CostingFun)
parseJSON = Options -> Value -> Parser (BuiltinCostModelBase CostingFun)
forall a.
(Generic a, GFromJSON Zero (Rep a)) =>
Options -> Value -> Parser a
genericParseJSON Options
builtinCostModelOptions
newtype MCostingFun a = MCostingFun (Maybe (CostingFun a))
deriving newtype ([MCostingFun a] -> Value
[MCostingFun a] -> Encoding
MCostingFun a -> Bool
MCostingFun a -> Value
MCostingFun a -> Encoding
(MCostingFun a -> Value)
-> (MCostingFun a -> Encoding)
-> ([MCostingFun a] -> Value)
-> ([MCostingFun a] -> Encoding)
-> (MCostingFun a -> Bool)
-> ToJSON (MCostingFun a)
forall a. ToJSON a => [MCostingFun a] -> Value
forall a. ToJSON a => [MCostingFun a] -> Encoding
forall a. ToJSON a => MCostingFun a -> Bool
forall a. ToJSON a => MCostingFun a -> Value
forall a. ToJSON a => MCostingFun a -> Encoding
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: forall a. ToJSON a => MCostingFun a -> Value
toJSON :: MCostingFun a -> Value
$ctoEncoding :: forall a. ToJSON a => MCostingFun a -> Encoding
toEncoding :: MCostingFun a -> Encoding
$ctoJSONList :: forall a. ToJSON a => [MCostingFun a] -> Value
toJSONList :: [MCostingFun a] -> Value
$ctoEncodingList :: forall a. ToJSON a => [MCostingFun a] -> Encoding
toEncodingList :: [MCostingFun a] -> Encoding
$comitField :: forall a. ToJSON a => MCostingFun a -> Bool
omitField :: MCostingFun a -> Bool
ToJSON)
deriving (NonEmpty (MCostingFun a) -> MCostingFun a
MCostingFun a -> MCostingFun a -> MCostingFun a
(MCostingFun a -> MCostingFun a -> MCostingFun a)
-> (NonEmpty (MCostingFun a) -> MCostingFun a)
-> (forall b. Integral b => b -> MCostingFun a -> MCostingFun a)
-> Semigroup (MCostingFun a)
forall b. Integral b => b -> MCostingFun a -> MCostingFun a
forall a. NonEmpty (MCostingFun a) -> MCostingFun a
forall a. MCostingFun a -> MCostingFun a -> MCostingFun a
forall a.
(a -> a -> a)
-> (NonEmpty a -> a)
-> (forall b. Integral b => b -> a -> a)
-> Semigroup a
forall a b. Integral b => b -> MCostingFun a -> MCostingFun a
$c<> :: forall a. MCostingFun a -> MCostingFun a -> MCostingFun a
<> :: MCostingFun a -> MCostingFun a -> MCostingFun a
$csconcat :: forall a. NonEmpty (MCostingFun a) -> MCostingFun a
sconcat :: NonEmpty (MCostingFun a) -> MCostingFun a
$cstimes :: forall a b. Integral b => b -> MCostingFun a -> MCostingFun a
stimes :: forall b. Integral b => b -> MCostingFun a -> MCostingFun a
Semigroup, Semigroup (MCostingFun a)
MCostingFun a
Semigroup (MCostingFun a) =>
MCostingFun a
-> (MCostingFun a -> MCostingFun a -> MCostingFun a)
-> ([MCostingFun a] -> MCostingFun a)
-> Monoid (MCostingFun a)
[MCostingFun a] -> MCostingFun a
MCostingFun a -> MCostingFun a -> MCostingFun a
forall a. Semigroup (MCostingFun a)
forall a. MCostingFun a
forall a.
Semigroup a =>
a -> (a -> a -> a) -> ([a] -> a) -> Monoid a
forall a. [MCostingFun a] -> MCostingFun a
forall a. MCostingFun a -> MCostingFun a -> MCostingFun a
$cmempty :: forall a. MCostingFun a
mempty :: MCostingFun a
$cmappend :: forall a. MCostingFun a -> MCostingFun a -> MCostingFun a
mappend :: MCostingFun a -> MCostingFun a -> MCostingFun a
$cmconcat :: forall a. [MCostingFun a] -> MCostingFun a
mconcat :: [MCostingFun a] -> MCostingFun a
Monoid) via (Alt Maybe (CostingFun a))
instance ToJSON (BuiltinCostModelBase MCostingFun) where
toJSON :: BuiltinCostModelBase MCostingFun -> Value
toJSON = Options -> BuiltinCostModelBase MCostingFun -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
mBuiltinCostModelOptions
toEncoding :: BuiltinCostModelBase MCostingFun -> Encoding
toEncoding = Options -> BuiltinCostModelBase MCostingFun -> Encoding
forall a.
(Generic a, GToJSON' Encoding Zero (Rep a)) =>
Options -> a -> Encoding
genericToEncoding Options
mBuiltinCostModelOptions
mBuiltinCostModelOptions :: Options
mBuiltinCostModelOptions :: Options
mBuiltinCostModelOptions = Options
builtinCostModelOptions {omitNothingFields = True}
type AllArgumentModels (constraint :: Kind.Type -> Kind.Constraint) f =
( constraint (f ModelOneArgument)
, constraint (f ModelTwoArguments)
, constraint (f ModelThreeArguments)
, constraint (f ModelFourArguments)
, constraint (f ModelFiveArguments)
, constraint (f ModelSixArguments)
)
deriving anyclass instance AllArgumentModels NFData f => NFData (BuiltinCostModelBase f)
deriving anyclass instance AllArgumentModels Default f => Default (BuiltinCostModelBase f)
deriving stock instance AllArgumentModels Lift f => Lift (BuiltinCostModelBase f)
deriving stock instance AllArgumentModels Show f => Show (BuiltinCostModelBase f)
deriving stock instance AllArgumentModels Eq f => Eq (BuiltinCostModelBase f)