plutarch-1.10.1
Safe HaskellSafe-Inferred
LanguageGHC2021

Plutarch.Repr.Derive

Synopsis

Documentation

newtype DerivePLiftableAsRepr (wrapper :: S -> Type) (h :: Type) (s :: S) Source #

This is PLiftable derivation helper for user-defined datatypes like Data/SOP encoded types. Please consult example below.

@@ data PBobData (a :: S -> Type) (s :: S) = PBobData (Term s (PAsData a)) (Term s (PAsData PBool)) deriving stock (Generic) deriving anyclass (SOP.Generic) deriving PlutusType via (DeriveAsDataRec (PBobData a)) -- SOP encoding works as well.

deriving via DerivePLiftableAsRepr (PBobData a) (Bob (AsHaskell a)) instance PLiftable (PAsData a) => PLiftable (PBobData a) @@

@since WIP

Constructors

DerivePLiftableAsRepr (wrapper s) 

Instances

Instances details
(PLiftable (PInner wrapper), Generic (wrapper (Any :: S)), Generic h, hstruct ~ Code h, struct' ~ Code (wrapper (Any :: S)), struct ~ UnTermStruct' struct', hstruct ~ StructAsHaskell struct, AsHaskell (PInner wrapper) ~ SOP I hstruct) => PLiftable (DerivePLiftableAsRepr wrapper h) Source #

@since WIP

Instance details

Defined in Plutarch.Repr.Derive

Associated Types

type AsHaskell (DerivePLiftableAsRepr wrapper h) Source #

type PlutusRepr (DerivePLiftableAsRepr wrapper h) Source #

PlutusType (DerivePLiftableAsRepr wrapper h) Source # 
Instance details

Defined in Plutarch.Repr.Derive

Methods

pcon' :: forall (s :: S). DerivePLiftableAsRepr wrapper h s -> Term s (PInner (DerivePLiftableAsRepr wrapper h)) Source #

pmatch' :: forall (s :: S) (b :: PType). Term s (PInner (DerivePLiftableAsRepr wrapper h)) -> (DerivePLiftableAsRepr wrapper h s -> Term s b) -> Term s b Source #

Generic (DerivePLiftableAsRepr wrapper h s) Source # 
Instance details

Defined in Plutarch.Repr.Derive

Associated Types

type Rep (DerivePLiftableAsRepr wrapper h s) :: Type -> Type Source #

Methods

from :: DerivePLiftableAsRepr wrapper h s -> Rep (DerivePLiftableAsRepr wrapper h s) x Source #

to :: Rep (DerivePLiftableAsRepr wrapper h s) x -> DerivePLiftableAsRepr wrapper h s Source #

Generic (DerivePLiftableAsRepr wrapper h s) Source # 
Instance details

Defined in Plutarch.Repr.Derive

Associated Types

type Code (DerivePLiftableAsRepr wrapper h s) :: [[Type]]

Methods

from :: DerivePLiftableAsRepr wrapper h s -> Rep (DerivePLiftableAsRepr wrapper h s)

to :: Rep (DerivePLiftableAsRepr wrapper h s) -> DerivePLiftableAsRepr wrapper h s

type AsHaskell (DerivePLiftableAsRepr wrapper h) Source # 
Instance details

Defined in Plutarch.Repr.Derive

type AsHaskell (DerivePLiftableAsRepr wrapper h) = h
type PlutusRepr (DerivePLiftableAsRepr wrapper h) Source # 
Instance details

Defined in Plutarch.Repr.Derive

type PlutusRepr (DerivePLiftableAsRepr wrapper h) = PlutusRepr (PInner wrapper)
type PContravariant' (DerivePLiftableAsRepr wrapper h) Source # 
Instance details

Defined in Plutarch.Repr.Derive

type PCovariant' (DerivePLiftableAsRepr wrapper h) Source # 
Instance details

Defined in Plutarch.Repr.Derive

type PInner (DerivePLiftableAsRepr wrapper h) Source # 
Instance details

Defined in Plutarch.Repr.Derive

type PVariant' (DerivePLiftableAsRepr wrapper h) Source # 
Instance details

Defined in Plutarch.Repr.Derive

type Rep (DerivePLiftableAsRepr wrapper h s) Source # 
Instance details

Defined in Plutarch.Repr.Derive

type Rep (DerivePLiftableAsRepr wrapper h s) = D1 ('MetaData "DerivePLiftableAsRepr" "Plutarch.Repr.Derive" "plutarch-1.10.1-LPGZaAWjybFFuyJX8dF1yJ" 'True) (C1 ('MetaCons "DerivePLiftableAsRepr" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (wrapper s))))
type Code (DerivePLiftableAsRepr wrapper h s) Source # 
Instance details

Defined in Plutarch.Repr.Derive

type Code (DerivePLiftableAsRepr wrapper h s) = GCode (DerivePLiftableAsRepr wrapper h s)