Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
tuple
s of various sizes and related functions.
Synopsis
- data Tuple term uni ann = Tuple {
- _tupleElementTypes ∷ [Type TyName uni ann]
- _tupleTerm ∷ term ann
- getTupleType ∷ MonadQuote m ⇒ ann → Tuple term uni ann → m (Type TyName uni ann)
- tupleTypeTermAt ∷ (TermLike term TyName Name uni fun, MonadQuote m) ⇒ ann → Int → Tuple term uni ann → m (Type TyName uni ann, term ann)
- tupleTermAt ∷ (TermLike term TyName Name uni fun, MonadQuote m) ⇒ ann → Int → Tuple term uni ann → m (term ann)
- tupleDefAt ∷ (TermLike term TyName Name uni fun, MonadQuote m) ⇒ ann → Int → Name → Tuple term uni ann → m (TermDef term TyName Name uni ann)
- bindTuple ∷ (TermLike term TyName Name uni fun, MonadQuote m) ⇒ ann → [Name] → Tuple term uni ann → term ann → m (term ann)
- prodN ∷ Int → Type TyName uni ()
- prodNConstructor ∷ TermLike term TyName Name uni fun ⇒ Int → term ()
- prodNAccessor ∷ TermLike term TyName Name uni fun ⇒ Int → Int → term ()
- getSpineToTuple ∷ (TermLike term TyName Name uni fun, MonadQuote m) ⇒ ann → [(Type TyName uni ann, term ann)] → m (Tuple term uni ann)
Documentation
data Tuple term uni ann Source #
A Plutus Core (Scott-encoded) tuple.
Tuple | |
|
getTupleType ∷ MonadQuote m ⇒ ann → Tuple term uni ann → m (Type TyName uni ann) Source #
Get the type of a Tuple
.
getTupleType _ (Tuple [a1, ... , an] _) = all r. (a1 -> ... -> an -> r) -> r
tupleTypeTermAt ∷ (TermLike term TyName Name uni fun, MonadQuote m) ⇒ ann → Int → Tuple term uni ann → m (Type TyName uni ann, term ann) Source #
Get the type of the ith element of a Tuple
along with the element itself.
tupleTypeTermAt _ i (Tuple [a0, ... , an] term) = (ai, term {ai} (\(x0 : a0) ... (xn : an) -> xi))
tupleTermAt ∷ (TermLike term TyName Name uni fun, MonadQuote m) ⇒ ann → Int → Tuple term uni ann → m (term ann) Source #
Get the ith element of a Tuple
.
tupleDefAt ∷ (TermLike term TyName Name uni fun, MonadQuote m) ⇒ ann → Int → Name → Tuple term uni ann → m (TermDef term TyName Name uni ann) Source #
bindTuple ∷ (TermLike term TyName Name uni fun, MonadQuote m) ⇒ ann → [Name] → Tuple term uni ann → term ann → m (term ann) Source #
prodN ∷ Int → Type TyName uni () Source #
Given an arity n
, create the n-ary product type.
(T_1 :: *) .. (T_n :: *) . all (R :: *) . (T_1 -> .. -> T_n -> R) -> R
prodNConstructor ∷ TermLike term TyName Name uni fun ⇒ Int → term () Source #
Given an arity n
, create the constructor for n-ary products.
/(T_1 :: *) .. (T_n :: *) . (arg_1 : T_1) .. (arg_n : T_n) . /(R :: *). (case : T_1 -> .. -> T_n -> R) -> case arg_1 .. arg_n
prodNAccessor ∷ TermLike term TyName Name uni fun ⇒ Int → Int → term () Source #
Given an arity n
and an index i
, create a function for accessing the i'th component of a n-tuple.
/(T_1 :: *) .. (T_n :: *) . (tuple : all (R :: *) . (T_1 -> .. -> T_n -> R) -> R)) . tuple {T_i} ((arg_1 : T_1) .. (arg_n : T_n) . arg_i)
getSpineToTuple ∷ (TermLike term TyName Name uni fun, MonadQuote m) ⇒ ann → [(Type TyName uni ann, term ann)] → m (Tuple term uni ann) Source #