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

PlutusCore.Generators.Hedgehog.TypeEvalCheck

Description

This module defines types and functions related to "type-eval checking".

Synopsis

Documentation

data TypeEvalCheckError uni fun Source #

The type of errors that can occur during type-eval checking.

Constructors

TypeEvalCheckErrorIllFormed !(Error uni fun ()) 
TypeEvalCheckErrorIllTyped !(Normalized (Type TyName uni ())) !(Normalized (Type TyName uni ())) 
TypeEvalCheckErrorException !String 
TypeEvalCheckErrorIllEvaled !(EvaluationResult (HeadSpine (Term TyName Name uni fun ()))) !(EvaluationResult (Term TyName Name uni fun ()))

The former is an expected result of evaluation, the latter -- is an actual one.

Instances

Instances details
(PrettyBy config (Type TyName uni ()), PrettyBy config (Term TyName Name uni fun ()), PrettyBy config (HeadSpine (Term TyName Name uni fun ())), PrettyBy config (Error uni fun ())) ⇒ PrettyBy config (TypeEvalCheckError uni fun) Source # 
Instance details

Defined in PlutusCore.Generators.Hedgehog.TypeEvalCheck

Methods

prettyBy ∷ config → TypeEvalCheckError uni fun → Doc ann Source #

prettyListBy ∷ config → [TypeEvalCheckError uni fun] → Doc ann Source #

data TypeEvalCheckResult uni fun Source #

Type-eval checking of a term results in a value of this type.

Constructors

TypeEvalCheckResult 

Fields

type TypeEvalCheckM uni fun = Either (TypeEvalCheckError uni fun) Source #

The monad type-eval checking runs in.

typeEvalCheckBy Source #

Arguments

∷ (uni ~ DefaultUni, fun ~ DefaultFun, KnownTypeAst TyName uni a, MakeKnown (Term TyName Name uni fun ()) a, PrettyPlc structural) 
⇒ (Term TyName Name uni fun () → Either (EvaluationException structural operational (Term TyName Name uni fun ())) (Term TyName Name uni fun ()))

An evaluator.

TermOf (Term TyName Name uni fun ()) a 
TypeEvalCheckM uni fun (TermOf (Term TyName Name uni fun ()) (TypeEvalCheckResult uni fun)) 

Type check and evaluate a term and check that the expected result is equal to the actual one.

unsafeTypeEvalCheck ∷ (uni ~ DefaultUni, fun ~ DefaultFun, KnownTypeAst TyName uni a, MakeKnown (Term TyName Name uni fun ()) a) ⇒ TermOf (Term TyName Name uni fun ()) a → TermOf (Term TyName Name uni fun ()) (EvaluationResult (Term TyName Name uni fun ())) Source #

Type check and evaluate a term and check that the expected result is equal to the actual one. Throw an error in case something goes wrong.