morley-1.18.0: Developer tools for the Michelson Language
Safe HaskellSafe-Inferred
LanguageHaskell2010

Morley.Michelson.TypeCheck.TypeCheckedSeq

Description

This module provides a data type for representing a partially typed sequence of instructions.

It is needed to represent the fact that there can only be one well-typed node in a sequence and it is the first one. Also, it serves its role to remove TCError usage from TypeCheckedOp.

Synopsis

Documentation

type TypeCheckedInstr = InstrAbstract TypeCheckedOp Source #

Represents a root of a partially typed operation tree.

data TypeCheckedOp where Source #

Represents nodes of a partially typed operation tree.

Constructors

WellTypedOp :: (SingI inp, SingI out) => Instr inp out -> TypeCheckedOp

Constructs well-typed node.

IllTypedOp :: IllTypedInstr -> TypeCheckedOp

Constructs ill-typed node which might in turn contain well-typed and non-typed operations.

data IllTypedInstr Source #

Represents a non-well-typed operation

Constructors

SemiTypedInstr TypeCheckedInstr

Constructs a partialy typed operation.

NonTypedInstr ExpandedOp

Constructs a completely untyped operation.

data TypeCheckedSeq inp Source #

Represents a partiall typed sequence of instructions.

Constructors

WellTypedSeq (SomeInstr inp)

A fully well-typed sequence.

MixedSeq (SomeInstr inp) TCError [IllTypedInstr]

A well-typed prefix followed by some error and semi-typed instructions.

IllTypedSeq TCError [IllTypedInstr]

There is no well-typed prefix, only an error and semi-typed instructions.

tcsEither Source #

Arguments

:: ([TypeCheckedOp] -> TCError -> a)

On error, with all already typechecked operations

-> (SomeInstr inp -> a)

On well-typed instruction

-> TypeCheckedSeq inp

The sequence to dispatch on

-> a 

Case analysis for TypeCheckedSeq.

someInstrToOp :: SomeInstr inp -> TypeCheckedOp Source #

Makes a well-typed node out of SomeInstr

someViewToOp :: View' op -> SomeView st -> View' TypeCheckedOp Source #

Makes a view with well-typed code, taking the untyped and typechecked view.