plutarch-1.3.0
Safe HaskellSafe-Inferred
LanguageGHC2021

Plutarch.TryFrom

Synopsis

Documentation

class PSubtype a b => PTryFrom (a :: PType) (b :: PType) where Source #

PTryFrom a b represents a subtyping relationship between a and b, and a way to go from a to b. Laws: - (punsafeCoerce . fst) $ tcont (ptryFrom x) ≡ pure x

Minimal complete definition

Nothing

Associated Types

type PTryFromExcess a b :: PType Source #

Methods

ptryFrom' :: forall s r. Term s a -> ((Term s b, Reduce (PTryFromExcess a b s)) -> Term s r) -> Term s r Source #

default ptryFrom' :: forall s r. (PTryFrom a (PInner b), PTryFromExcess a b ~ PTryFromExcess a (PInner b)) => Term s a -> ((Term s b, Reduce (PTryFromExcess a b s)) -> Term s r) -> Term s r Source #

Instances

Instances details
PTryFrom PData PAddress Source # 
Instance details

Defined in Plutarch.Api.V1.Address

Associated Types

type PTryFromExcess PData PAddress :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s PAddress, Reduce (PTryFromExcess PData PAddress s)) -> Term s r) -> Term s r Source #

PTryFrom PData PCredential Source # 
Instance details

Defined in Plutarch.Api.V1.Address

Associated Types

type PTryFromExcess PData PCredential :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s PCredential, Reduce (PTryFromExcess PData PCredential s)) -> Term s r) -> Term s r Source #

PTryFrom PData PStakingCredential Source # 
Instance details

Defined in Plutarch.Api.V1.Address

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s PStakingCredential, Reduce (PTryFromExcess PData PStakingCredential s)) -> Term s r) -> Term s r Source #

PTryFrom PData PTxId Source # 
Instance details

Defined in Plutarch.Api.V1.Tx

Associated Types

type PTryFromExcess PData PTxId :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s PTxId, Reduce (PTryFromExcess PData PTxId s)) -> Term s r) -> Term s r Source #

PTryFrom PData PTxOutRef Source # 
Instance details

Defined in Plutarch.Api.V1.Tx

Associated Types

type PTryFromExcess PData PTxOutRef :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s PTxOutRef, Reduce (PTryFromExcess PData PTxOutRef s)) -> Term s r) -> Term s r Source #

PTryFrom PData PData Source # 
Instance details

Defined in Plutarch.Builtin

Associated Types

type PTryFromExcess PData PData :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s PData, Reduce (PTryFromExcess PData PData s)) -> Term s r) -> Term s r Source #

PTryFrom PInteger PPositive Source # 
Instance details

Defined in Plutarch.Positive

Associated Types

type PTryFromExcess PInteger PPositive :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PInteger -> ((Term s PPositive, Reduce (PTryFromExcess PInteger PPositive s)) -> Term s r) -> Term s r Source #

PTryFrom PData a => PTryFrom PData (PMaybeData a) Source # 
Instance details

Defined in Plutarch.Api.V1.Maybe

Associated Types

type PTryFromExcess PData (PMaybeData a) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PMaybeData a), Reduce (PTryFromExcess PData (PMaybeData a) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PAddress) Source # 
Instance details

Defined in Plutarch.Api.V1.Address

Associated Types

type PTryFromExcess PData (PAsData PAddress) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PAddress), Reduce (PTryFromExcess PData (PAsData PAddress) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PCredential) Source # 
Instance details

Defined in Plutarch.Api.V1.Address

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PCredential), Reduce (PTryFromExcess PData (PAsData PCredential) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PStakingCredential) Source # 
Instance details

Defined in Plutarch.Api.V1.Address

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PStakingCredential), Reduce (PTryFromExcess PData (PAsData PStakingCredential) s)) -> Term s r) -> Term s r Source #

(POrd k, PIsData k, PIsData v, PTryFrom PData (PAsData k), PTryFrom PData (PAsData v)) => PTryFrom PData (PAsData (PMap 'Sorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Associated Types

type PTryFromExcess PData (PAsData (PMap 'Sorted k v)) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PMap 'Sorted k v)), Reduce (PTryFromExcess PData (PAsData (PMap 'Sorted k v)) s)) -> Term s r) -> Term s r Source #

(PTryFrom PData (PAsData k), PTryFrom PData (PAsData v)) => PTryFrom PData (PAsData (PMap 'Unsorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Associated Types

type PTryFromExcess PData (PAsData (PMap 'Unsorted k v)) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PMap 'Unsorted k v)), Reduce (PTryFromExcess PData (PAsData (PMap 'Unsorted k v)) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PPubKeyHash) Source # 
Instance details

Defined in Plutarch.Api.V1.Crypto

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PPubKeyHash), Reduce (PTryFromExcess PData (PAsData PPubKeyHash) s)) -> Term s r) -> Term s r Source #

PTryFrom PData a => PTryFrom PData (PAsData (PMaybeData a)) Source # 
Instance details

Defined in Plutarch.Api.V1.Maybe

Associated Types

type PTryFromExcess PData (PAsData (PMaybeData a)) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PMaybeData a)), Reduce (PTryFromExcess PData (PAsData (PMaybeData a)) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PScriptHash) Source # 
Instance details

Defined in Plutarch.Api.V1.Scripts

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PScriptHash), Reduce (PTryFromExcess PData (PAsData PScriptHash) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PPOSIXTime) Source # 
Instance details

Defined in Plutarch.Api.V1.Time

Associated Types

type PTryFromExcess PData (PAsData PPOSIXTime) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PPOSIXTime), Reduce (PTryFromExcess PData (PAsData PPOSIXTime) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PTxId) Source # 
Instance details

Defined in Plutarch.Api.V1.Tx

Associated Types

type PTryFromExcess PData (PAsData PTxId) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PTxId), Reduce (PTryFromExcess PData (PAsData PTxId) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PTxOutRef) Source # 
Instance details

Defined in Plutarch.Api.V1.Tx

Associated Types

type PTryFromExcess PData (PAsData PTxOutRef) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PTxOutRef), Reduce (PTryFromExcess PData (PAsData PTxOutRef) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PCurrencySymbol) Source # 
Instance details

Defined in Plutarch.Api.V1.Value

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PCurrencySymbol), Reduce (PTryFromExcess PData (PAsData PCurrencySymbol) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PTokenName) Source # 
Instance details

Defined in Plutarch.Api.V1.Value

Associated Types

type PTryFromExcess PData (PAsData PTokenName) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PTokenName), Reduce (PTryFromExcess PData (PAsData PTokenName) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData (PValue 'Sorted 'NoGuarantees)) Source # 
Instance details

Defined in Plutarch.Api.V1.Value

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PValue 'Sorted 'NoGuarantees)), Reduce (PTryFromExcess PData (PAsData (PValue 'Sorted 'NoGuarantees)) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData (PValue 'Sorted 'NonZero)) Source # 
Instance details

Defined in Plutarch.Api.V1.Value

Associated Types

type PTryFromExcess PData (PAsData (PValue 'Sorted 'NonZero)) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PValue 'Sorted 'NonZero)), Reduce (PTryFromExcess PData (PAsData (PValue 'Sorted 'NonZero)) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData (PValue 'Sorted 'Positive)) Source # 
Instance details

Defined in Plutarch.Api.V1.Value

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PValue 'Sorted 'Positive)), Reduce (PTryFromExcess PData (PAsData (PValue 'Sorted 'Positive)) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData (PValue 'Unsorted 'NoGuarantees)) Source # 
Instance details

Defined in Plutarch.Api.V1.Value

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PValue 'Unsorted 'NoGuarantees)), Reduce (PTryFromExcess PData (PAsData (PValue 'Unsorted 'NoGuarantees)) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData (PValue 'Unsorted 'NonZero)) Source # 
Instance details

Defined in Plutarch.Api.V1.Value

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PValue 'Unsorted 'NonZero)), Reduce (PTryFromExcess PData (PAsData (PValue 'Unsorted 'NonZero)) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData (PValue 'Unsorted 'Positive)) Source # 
Instance details

Defined in Plutarch.Api.V1.Value

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PValue 'Unsorted 'Positive)), Reduce (PTryFromExcess PData (PAsData (PValue 'Unsorted 'Positive)) s)) -> Term s r) -> Term s r Source #

(PTryFrom PData (PAsData a), PIsData a) => PTryFrom PData (PAsData (PBuiltinList (PAsData a))) Source #

Recover a `PBuiltinList (PAsData a)`

Instance details

Defined in Plutarch.Builtin

Associated Types

type PTryFromExcess PData (PAsData (PBuiltinList (PAsData a))) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PBuiltinList (PAsData a))), Reduce (PTryFromExcess PData (PAsData (PBuiltinList (PAsData a))) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData (PBuiltinList PData)) Source #

This verifies a list to be indeed a list but doesn't recover the inner data use this instance instead of the one for `PData (PAsData (PBuiltinList (PAsData a)))` as this is O(1) instead of O(n)

Instance details

Defined in Plutarch.Builtin

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PBuiltinList PData)), Reduce (PTryFromExcess PData (PAsData (PBuiltinList PData)) s)) -> Term s r) -> Term s r Source #

(PTryFrom PData a, a ~ PAsData a', PIsData a', PTryFrom PData b, b ~ PAsData b', PIsData b') => PTryFrom PData (PAsData (PBuiltinPair a b)) Source #

Recover a `PAsData (PBuiltinPair a b)`

Instance details

Defined in Plutarch.Builtin

Associated Types

type PTryFromExcess PData (PAsData (PBuiltinPair a b)) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PBuiltinPair a b)), Reduce (PTryFromExcess PData (PAsData (PBuiltinPair a b)) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PData) Source # 
Instance details

Defined in Plutarch.Builtin

Associated Types

type PTryFromExcess PData (PAsData PData) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PData), Reduce (PTryFromExcess PData (PAsData PData) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PByteString) Source # 
Instance details

Defined in Plutarch.Builtin

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PByteString), Reduce (PTryFromExcess PData (PAsData PByteString) s)) -> Term s r) -> Term s r Source #

(PTryFrom (PBuiltinList PData) (PDataRecord as), PTryFromExcess (PBuiltinList PData) (PDataRecord as) ~ HRecP ase) => PTryFrom PData (PAsData (PDataRecord as)) Source # 
Instance details

Defined in Plutarch.DataRepr.Internal

Associated Types

type PTryFromExcess PData (PAsData (PDataRecord as)) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PDataRecord as)), Reduce (PTryFromExcess PData (PAsData (PDataRecord as)) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PDataSum ys) => PTryFrom PData (PAsData (PDataSum ys)) Source # 
Instance details

Defined in Plutarch.DataRepr.Internal

Associated Types

type PTryFromExcess PData (PAsData (PDataSum ys)) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PDataSum ys)), Reduce (PTryFromExcess PData (PAsData (PDataSum ys)) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PInteger) Source # 
Instance details

Defined in Plutarch.Builtin

Associated Types

type PTryFromExcess PData (PAsData PInteger) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PInteger), Reduce (PTryFromExcess PData (PAsData PInteger) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PPositive) Source # 
Instance details

Defined in Plutarch.Positive

Associated Types

type PTryFromExcess PData (PAsData PPositive) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PPositive), Reduce (PTryFromExcess PData (PAsData PPositive) s)) -> Term s r) -> Term s r Source #

PTryFrom PData (PAsData PRational) Source #

NOTE: This instance produces a verified PPositive as the excess output.

Instance details

Defined in Plutarch.Rational

Associated Types

type PTryFromExcess PData (PAsData PRational) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData PRational), Reduce (PTryFromExcess PData (PAsData PRational) s)) -> Term s r) -> Term s r Source #

SumValidation 0 ys => PTryFrom PData (PDataSum ys) Source # 
Instance details

Defined in Plutarch.DataRepr.Internal

Associated Types

type PTryFromExcess PData (PDataSum ys) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PDataSum ys), Reduce (PTryFromExcess PData (PDataSum ys) s)) -> Term s r) -> Term s r Source #

(Helper2 (PSubtype' PData pty) pty, PTryFrom (PBuiltinList PData) (PDataRecord as), PTryFromExcess (PBuiltinList PData) (PDataRecord as) ~ HRecP ase) => PTryFrom (PBuiltinList PData) (PDataRecord ((name := pty) ': as)) Source # 
Instance details

Defined in Plutarch.DataRepr.Internal

Associated Types

type PTryFromExcess (PBuiltinList PData) (PDataRecord ((name := pty) ': as)) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s (PBuiltinList PData) -> ((Term s (PDataRecord ((name := pty) ': as)), Reduce (PTryFromExcess (PBuiltinList PData) (PDataRecord ((name := pty) ': as)) s)) -> Term s r) -> Term s r Source #

PTryFrom (PBuiltinList PData) (PDataRecord ('[] :: [PLabeledType])) Source # 
Instance details

Defined in Plutarch.DataRepr.Internal

Associated Types

type PTryFromExcess (PBuiltinList PData) (PDataRecord '[]) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s (PBuiltinList PData) -> ((Term s (PDataRecord '[]), Reduce (PTryFromExcess (PBuiltinList PData) (PDataRecord '[]) s)) -> Term s r) -> Term s r Source #

ptryFrom :: forall b a s r. PTryFrom a b => Term s a -> ((Term s b, Reduce (PTryFromExcess a b s)) -> Term s r) -> Term s r Source #

type family PSubtype (a :: PType) (b :: PType) :: Constraint where ... Source #

Equations

PSubtype a b = (PSubtype' a b ~ 'PSubtypeRelation, PSubtypeHelper a b (PSubtype' a b)) 

type family PSubtype' (a :: PType) (b :: PType) :: PSubtypeRelation where ... Source #

Equations

PSubtype' a a = 'PSubtypeRelation 
PSubtype' a b = Helper a b (PInner b) 

pupcast :: forall a b s. PSubtype a b => Term s b -> Term s a Source #

pupcastF :: forall a b (p :: PType -> PType) s. (PSubtype a b, PCovariant p) => Proxy p -> Term s (p b) -> Term s (p a) Source #

pdowncastF :: forall a b (p :: PType -> PType) s. (PSubtype a b, PContravariant p) => Proxy p -> Term s (p a) -> Term s (p b) Source #