plutus-core-1.71.0.0: Language library for Plutus Core
Safe HaskellSafe-Inferred
LanguageHaskell2010

PlutusCore.Generators.NEAT.Term

Description

This file contains 1. A duplicate of the Plutus Core Abstract Syntax (types and terms) 2. A kind checker and a type checker 3. Reduction semantics for types

Synopsis

Documentation

data TypeBuiltinG Source #

Instances

Instances details
Show TypeBuiltinG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Eq TypeBuiltinG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Ord TypeBuiltinG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Enumerable TypeBuiltinG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f TypeBuiltinG Source #

Check (Kind ()) TypeBuiltinG Source #

Kind check builtin types.

NOTE: If we make |checkTypeBuiltinG| non-strict in its second argument, lazy-search will only ever return one of the various builtin types. Perhaps this is preferable?

Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

check ∷ Kind () → TypeBuiltinG → Cool Source #

data TypeG n Source #

Constructors

TyVarG n 
TyFunG (TypeG n) (TypeG n) 
TyIFixG (TypeG n) (Kind ()) (TypeG n) 
TyForallG (Kind ()) (TypeG (S n)) 
TyBuiltinG TypeBuiltinG 
TyLamG (TypeG (S n)) 
TyAppG (TypeG n) (TypeG n) (Kind ()) 

Instances

Instances details
Applicative TypeG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Methods

pure ∷ a → TypeG a Source #

(<*>) ∷ TypeG (a → b) → TypeG a → TypeG b Source #

liftA2 ∷ (a → b → c) → TypeG a → TypeG b → TypeG c Source #

(*>) ∷ TypeG a → TypeG b → TypeG b Source #

(<*) ∷ TypeG a → TypeG b → TypeG a Source #

Functor TypeG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Methods

fmap ∷ (a → b) → TypeG a → TypeG b Source #

(<$) ∷ a → TypeG b → TypeG a Source #

Monad TypeG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Methods

(>>=) ∷ TypeG a → (a → TypeG b) → TypeG b Source #

(>>) ∷ TypeG a → TypeG b → TypeG b Source #

return ∷ a → TypeG a Source #

Check ClosedTypeG ClosedTermG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Show n ⇒ Show (TypeG n) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Methods

showsPrec ∷ Int → TypeG n → ShowS Source #

show ∷ TypeG n → String Source #

showList ∷ [TypeG n] → ShowS Source #

Eq n ⇒ Eq (TypeG n) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Methods

(==) ∷ TypeG n → TypeG n → Bool Source #

(/=) ∷ TypeG n → TypeG n → Bool Source #

Ord n ⇒ Ord (TypeG n) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Methods

compare ∷ TypeG n → TypeG n → Ordering Source #

(<) ∷ TypeG n → TypeG n → Bool Source #

(<=) ∷ TypeG n → TypeG n → Bool Source #

(>) ∷ TypeG n → TypeG n → Bool Source #

(>=) ∷ TypeG n → TypeG n → Bool Source #

max ∷ TypeG n → TypeG n → TypeG n Source #

min ∷ TypeG n → TypeG n → TypeG n Source #

Enumerable tyname ⇒ Enumerable (Normalized (TypeG tyname)) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f (Normalized (TypeG tyname)) Source #

Enumerable tyname ⇒ Enumerable (Neutral (TypeG tyname)) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f (Neutral (TypeG tyname)) Source #

Enumerable n ⇒ Enumerable (TypeG n) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Type

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f (TypeG n) Source #

Check (Kind ()) ClosedTypeG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

check ∷ Kind () → ClosedTypeG → Cool Source #

Check (TypeG n) TermConstantG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

check ∷ TypeG n → TermConstantG → Cool Source #

Ord tyname ⇒ Check (TypeG tyname) DefaultFun Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

check ∷ TypeG tyname → DefaultFun → Cool Source #

Check (Kind ()) (Normalized ClosedTypeG) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

check ∷ Kind () → Normalized ClosedTypeG → Cool Source #

convertClosedType ∷ (MonadQuote m, MonadError GenError m) ⇒ Stream Text → Kind () → ClosedTypeG → m (Type TyName DefaultUni ()) Source #

Convert generated closed types to Plutus types.

data TermG tyname name Source #

Constructors

VarG name 
LamAbsG (TermG tyname (S name)) 
ApplyG (TermG tyname name) (TermG tyname name) (TypeG tyname) 
TyAbsG (TermG (S tyname) name) 
TyInstG (TermG tyname name) (TypeG (S tyname)) (TypeG tyname) (Kind ()) 
ConstantG TermConstantG 
BuiltinG DefaultFun 
WrapG (TermG tyname name) 
UnWrapG (TypeG tyname) (Kind ()) (TypeG tyname) (TermG tyname name) 
ErrorG (TypeG tyname) 

Instances

Instances details
Bifunctor TermG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

bimap ∷ (a → b) → (c → d) → TermG a c → TermG b d Source #

first ∷ (a → b) → TermG a c → TermG b c Source #

second ∷ (b → c) → TermG a b → TermG a c Source #

Check ClosedTypeG ClosedTermG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Functor (TermG tyname) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

fmap ∷ (a → b) → TermG tyname a → TermG tyname b Source #

(<$) ∷ a → TermG tyname b → TermG tyname a Source #

(Show name, Show tyname) ⇒ Show (TermG tyname name) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

showsPrec ∷ Int → TermG tyname name → ShowS Source #

show ∷ TermG tyname name → String Source #

showList ∷ [TermG tyname name] → ShowS Source #

(Eq name, Eq tyname) ⇒ Eq (TermG tyname name) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

(==) ∷ TermG tyname name → TermG tyname name → Bool Source #

(/=) ∷ TermG tyname name → TermG tyname name → Bool Source #

(Enumerable tyname, Enumerable name) ⇒ Enumerable (TermG tyname name) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f (TermG tyname name) Source #

convertClosedTerm ∷ (MonadQuote m, MonadError GenError m) ⇒ Stream Text → Stream Text → ClosedTypeG → ClosedTermG → m (Term TyName Name DefaultUni DefaultFun ()) Source #

Convert generated closed terms to Plutus terms.

class Check t a where Source #

Methods

check ∷ t → a → Cool Source #

Instances

Instances details
Check ClosedTypeG ClosedTermG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Check (Kind ()) ClosedTypeG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

check ∷ Kind () → ClosedTypeG → Cool Source #

Check (Kind ()) TypeBuiltinG Source #

Kind check builtin types.

NOTE: If we make |checkTypeBuiltinG| non-strict in its second argument, lazy-search will only ever return one of the various builtin types. Perhaps this is preferable?

Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

check ∷ Kind () → TypeBuiltinG → Cool Source #

Check (TypeG n) TermConstantG Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

check ∷ TypeG n → TermConstantG → Cool Source #

Ord tyname ⇒ Check (TypeG tyname) DefaultFun Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

check ∷ TypeG tyname → DefaultFun → Cool Source #

Check (Kind ()) (Normalized ClosedTypeG) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

check ∷ Kind () → Normalized ClosedTypeG → Cool Source #

stepTypeG ∷ TypeG n → Maybe (TypeG n) Source #

Reduce a generated type by a single step, or fail.

normalizeTypeG ∷ TypeG n → TypeG n Source #

Normalise a generated type.

data GenError Source #

Constructors

∀ tyname.Show tyname ⇒ BadTypeG (Kind ()) (TypeG tyname) 
∀ tyname name.(Show tyname, Show name) ⇒ BadTermG (TypeG tyname) (TermG tyname name) 

Instances

Instances details
Show GenError Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

newtype Neutral a Source #

Constructors

Neutral 

Fields

Instances

Instances details
Enumerable tyname ⇒ Enumerable (Neutral (TypeG tyname)) Source # 
Instance details

Defined in PlutusCore.Generators.NEAT.Term

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f (Neutral (TypeG tyname)) Source #

Orphan instances

Enumerable ByteString Source # 
Instance details

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f ByteString Source #

Enumerable Data Source # 
Instance details

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f Data Source #

Enumerable DefaultFun Source # 
Instance details

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f DefaultFun Source #

Enumerable Text Source # 
Instance details

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f Text Source #

Enumerable tyname ⇒ Enumerable (Normalized (TypeG tyname)) Source # 
Instance details

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f (Normalized (TypeG tyname)) Source #

Enumerable tyname ⇒ Enumerable (Neutral (TypeG tyname)) Source # 
Instance details

Methods

enumerate ∷ ∀ (f ∷ Type → Type). (Typeable f, Sized f) ⇒ Shared f (Neutral (TypeG tyname)) Source #