stgi-1.1: Educational implementation of the STG (Spineless Tagless G-machine)

Safe HaskellNone
LanguageHaskell2010

Stg.Machine.Types

Contents

Description

Types used in the execution of the STG machine.

Synopsis

Documentation

data StgState Source #

The internal state of an STG.

Constructors

StgState 

Fields

  • stgCode :: Code

    Operation the STG should perform next

  • stgStack :: Stack StackFrame

    The stack stores not-yet-used arguments (argument stack part), computations to return to once case evaluation has finished (return stack part), and instructions to update heap entries once computation of a certain value is done.

  • stgHeap :: Heap

    The heap stores values allocated at the top level or in let(rec) expressions.

  • stgGlobals :: Globals

    The environment consisting of the top-level definitions.

  • stgSteps :: !Integer

    A counter, used to generte fresh variable names and for orientation purposes.

  • stgInfo :: Info

    Information about the current state

Instances

Eq StgState Source # 
Ord StgState Source # 
Show StgState Source # 
Generic StgState Source # 

Associated Types

type Rep StgState :: * -> * #

Methods

from :: StgState -> Rep StgState x #

to :: Rep StgState x -> StgState #

NFData StgState Source # 

Methods

rnf :: StgState -> () #

PrettyStgi StgState Source # 
type Rep StgState Source # 

data StackFrame Source #

Stack frames unify arguments, returns, and updates.

Constructors

ArgumentFrame Value

Argument frames store values on the argument stack, so that they can later be retrieved when the calling function can be applied to them.

ReturnFrame Alts Locals

Return frames are used when the scrutinee of a case expression is done being evaluated, and the branch to continue on has to be decided.

UpdateFrame MemAddr

When an updatable closure is entered, an update frame with its heap address is created. Once its computation finishes, its heap entry is updated with the computed value.

Instances

Eq StackFrame Source # 
Ord StackFrame Source # 
Show StackFrame Source # 
Generic StackFrame Source # 

Associated Types

type Rep StackFrame :: * -> * #

NFData StackFrame Source # 

Methods

rnf :: StackFrame -> () #

PrettyStgi StackFrame Source # 
UpdateAddrs StackFrame Source # 
Addresses StackFrame Source # 
type Rep StackFrame Source # 

newtype MemAddr Source #

A memory address.

Constructors

MemAddr Int 

Instances

Bounded MemAddr Source # 
Enum MemAddr Source # 
Eq MemAddr Source # 

Methods

(==) :: MemAddr -> MemAddr -> Bool #

(/=) :: MemAddr -> MemAddr -> Bool #

Ord MemAddr Source # 
Show MemAddr Source # 
Generic MemAddr Source # 

Associated Types

type Rep MemAddr :: * -> * #

Methods

from :: MemAddr -> Rep MemAddr x #

to :: Rep MemAddr x -> MemAddr #

NFData MemAddr Source # 

Methods

rnf :: MemAddr -> () #

PrettyStgi MemAddr Source # 
UpdateAddrs MemAddr Source # 
Addresses MemAddr Source # 
type Rep MemAddr Source # 
type Rep MemAddr = D1 (MetaData "MemAddr" "Stg.Machine.Types" "stgi-1.1-LT0PoB9W7KUFnIHxeV3rhx" True) (C1 (MetaCons "MemAddr" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))

data Value Source #

A value of the STG machine.

Constructors

Addr MemAddr 
PrimInt Integer 

data Code Source #

The different code states the STG can be in.

Constructors

Eval Expr Locals

Evaluate an expression within a local environment

Enter MemAddr

Load the closure at a certain heap address

ReturnCon Constr [Value]

Sub-computation terminated with an algebraic Constructor

ReturnInt Integer

Sub-computation terminated with a primitive integer

Instances

Eq Code Source # 

Methods

(==) :: Code -> Code -> Bool #

(/=) :: Code -> Code -> Bool #

Ord Code Source # 

Methods

compare :: Code -> Code -> Ordering #

(<) :: Code -> Code -> Bool #

(<=) :: Code -> Code -> Bool #

(>) :: Code -> Code -> Bool #

(>=) :: Code -> Code -> Bool #

max :: Code -> Code -> Code #

min :: Code -> Code -> Code #

Show Code Source # 

Methods

showsPrec :: Int -> Code -> ShowS #

show :: Code -> String #

showList :: [Code] -> ShowS #

Generic Code Source # 

Associated Types

type Rep Code :: * -> * #

Methods

from :: Code -> Rep Code x #

to :: Rep Code x -> Code #

NFData Code Source # 

Methods

rnf :: Code -> () #

PrettyStgi Code Source # 
UpdateAddrs Code Source # 

Methods

updateAddrs :: (MemAddr -> MemAddr) -> Code -> Code Source #

Addresses Code Source # 
type Rep Code Source # 

data Mapping k v Source #

A single key -> value association.

Used to make 2-tuples to be inserted into association maps clearer.

Constructors

Mapping k v 

Instances

(Eq v, Eq k) => Eq (Mapping k v) Source # 

Methods

(==) :: Mapping k v -> Mapping k v -> Bool #

(/=) :: Mapping k v -> Mapping k v -> Bool #

(Ord v, Ord k) => Ord (Mapping k v) Source # 

Methods

compare :: Mapping k v -> Mapping k v -> Ordering #

(<) :: Mapping k v -> Mapping k v -> Bool #

(<=) :: Mapping k v -> Mapping k v -> Bool #

(>) :: Mapping k v -> Mapping k v -> Bool #

(>=) :: Mapping k v -> Mapping k v -> Bool #

max :: Mapping k v -> Mapping k v -> Mapping k v #

min :: Mapping k v -> Mapping k v -> Mapping k v #

(Show v, Show k) => Show (Mapping k v) Source # 

Methods

showsPrec :: Int -> Mapping k v -> ShowS #

show :: Mapping k v -> String #

showList :: [Mapping k v] -> ShowS #

Generic (Mapping k v) Source # 

Associated Types

type Rep (Mapping k v) :: * -> * #

Methods

from :: Mapping k v -> Rep (Mapping k v) x #

to :: Rep (Mapping k v) x -> Mapping k v #

(NFData k, NFData v) => NFData (Mapping k v) Source # 

Methods

rnf :: Mapping k v -> () #

(PrettyStgi k, PrettyStgi v) => PrettyStgi (Mapping k v) Source # 
type Rep (Mapping k v) Source # 
type Rep (Mapping k v) = D1 (MetaData "Mapping" "Stg.Machine.Types" "stgi-1.1-LT0PoB9W7KUFnIHxeV3rhx" False) (C1 (MetaCons "Mapping" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 k)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 v))))

newtype Globals Source #

The global environment consists of the mapping from top-level definitions to their respective values.

Constructors

Globals (Map Var Value) 

Instances

Eq Globals Source # 

Methods

(==) :: Globals -> Globals -> Bool #

(/=) :: Globals -> Globals -> Bool #

Ord Globals Source # 
Show Globals Source # 
Generic Globals Source # 

Associated Types

type Rep Globals :: * -> * #

Methods

from :: Globals -> Rep Globals x #

to :: Rep Globals x -> Globals #

Semigroup Globals Source # 
Monoid Globals Source # 
NFData Globals Source # 

Methods

rnf :: Globals -> () #

PrettyStgi Globals Source # 
UpdateAddrs Globals Source # 
Addresses Globals Source # 
type Rep Globals Source # 
type Rep Globals = D1 (MetaData "Globals" "Stg.Machine.Types" "stgi-1.1-LT0PoB9W7KUFnIHxeV3rhx" True) (C1 (MetaCons "Globals" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Map Var Value))))

newtype Locals Source #

The global environment consists if the mapping from local definitions to their respective values.

Constructors

Locals (Map Var Value) 

Instances

Eq Locals Source # 

Methods

(==) :: Locals -> Locals -> Bool #

(/=) :: Locals -> Locals -> Bool #

Ord Locals Source # 
Show Locals Source # 
Generic Locals Source # 

Associated Types

type Rep Locals :: * -> * #

Methods

from :: Locals -> Rep Locals x #

to :: Rep Locals x -> Locals #

Semigroup Locals Source # 
Monoid Locals Source # 
NFData Locals Source # 

Methods

rnf :: Locals -> () #

PrettyStgi Locals Source # 
UpdateAddrs Locals Source # 
Addresses Locals Source # 
type Rep Locals Source # 
type Rep Locals = D1 (MetaData "Locals" "Stg.Machine.Types" "stgi-1.1-LT0PoB9W7KUFnIHxeV3rhx" True) (C1 (MetaCons "Locals" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Map Var Value))))

data Closure Source #

A closure is a lambda form, together with the values of its free variables.

Constructors

Closure LambdaForm [Value] 

newtype Heap Source #

The heap stores closures addressed by memory location.

Constructors

Heap (Map MemAddr HeapObject) 

Instances

Eq Heap Source # 

Methods

(==) :: Heap -> Heap -> Bool #

(/=) :: Heap -> Heap -> Bool #

Ord Heap Source # 

Methods

compare :: Heap -> Heap -> Ordering #

(<) :: Heap -> Heap -> Bool #

(<=) :: Heap -> Heap -> Bool #

(>) :: Heap -> Heap -> Bool #

(>=) :: Heap -> Heap -> Bool #

max :: Heap -> Heap -> Heap #

min :: Heap -> Heap -> Heap #

Show Heap Source # 

Methods

showsPrec :: Int -> Heap -> ShowS #

show :: Heap -> String #

showList :: [Heap] -> ShowS #

Generic Heap Source # 

Associated Types

type Rep Heap :: * -> * #

Methods

from :: Heap -> Rep Heap x #

to :: Rep Heap x -> Heap #

Semigroup Heap Source # 

Methods

(<>) :: Heap -> Heap -> Heap #

sconcat :: NonEmpty Heap -> Heap #

stimes :: Integral b => b -> Heap -> Heap #

Monoid Heap Source # 

Methods

mempty :: Heap #

mappend :: Heap -> Heap -> Heap #

mconcat :: [Heap] -> Heap #

NFData Heap Source # 

Methods

rnf :: Heap -> () #

PrettyStgi Heap Source # 
type Rep Heap Source # 
type Rep Heap = D1 (MetaData "Heap" "Stg.Machine.Types" "stgi-1.1-LT0PoB9W7KUFnIHxeV3rhx" True) (C1 (MetaCons "Heap" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Map MemAddr HeapObject))))

data HeapObject Source #

Heap objects are what is stored on the heap. The most common and also most important one are closures.

Constructors

HClosure Closure 
Blackhole Integer

When an updatable closure is entered, it is overwritten by a black hole. This has two main benefits:

  1. Memory mentioned only in the closure is now ready to be collected, avoiding certain space leaks.
  2. Entering a black hole means a thunk depends on itself, allowing the interpreter to catch some non-terminating computations with a useful error

To make the black hole a bit more transparent, it is tagged with the STG tick in which it was introduced. This tag is used only for display purposes.

State information

data Info Source #

User-facing information about the current state of the STG.

Constructors

Info InfoShort [InfoDetail] 

Instances

Eq Info Source # 

Methods

(==) :: Info -> Info -> Bool #

(/=) :: Info -> Info -> Bool #

Ord Info Source # 

Methods

compare :: Info -> Info -> Ordering #

(<) :: Info -> Info -> Bool #

(<=) :: Info -> Info -> Bool #

(>) :: Info -> Info -> Bool #

(>=) :: Info -> Info -> Bool #

max :: Info -> Info -> Info #

min :: Info -> Info -> Info #

Show Info Source # 

Methods

showsPrec :: Int -> Info -> ShowS #

show :: Info -> String #

showList :: [Info] -> ShowS #

Generic Info Source # 

Associated Types

type Rep Info :: * -> * #

Methods

from :: Info -> Rep Info x #

to :: Rep Info x -> Info #

NFData Info Source # 

Methods

rnf :: Info -> () #

PrettyStgi Info Source # 
type Rep Info Source # 

data InfoShort Source #

Short machine status info. This field may be used programmatically, in particular it tells the stepper whether the machine has halted.

Constructors

NoRulesApply

There is no valid state transition to continue with.

MaxStepsExceeded

The machine did not halt within a number of steps. Used by evalUntil.

HaltedByPredicate

The machine halted because a user-specified halting predicate held.

StateError StateError

The machine halted in a state that is known to be invalid, there is no valid state transition to continue with.

An example of this would be a ReturnCon state with an empty return stack.

StateTransition StateTransition

Description of the state transition that lead to the current state.

StateInitial

Used to mark the initial state of the machine.

GarbageCollection

A garbage collection step, in which no ordinary evaluation is done.

Instances

Eq InfoShort Source # 
Ord InfoShort Source # 
Show InfoShort Source # 
Generic InfoShort Source # 

Associated Types

type Rep InfoShort :: * -> * #

NFData InfoShort Source # 

Methods

rnf :: InfoShort -> () #

PrettyStgi InfoShort Source # 
type Rep InfoShort Source # 
type Rep InfoShort = D1 (MetaData "InfoShort" "Stg.Machine.Types" "stgi-1.1-LT0PoB9W7KUFnIHxeV3rhx" False) ((:+:) ((:+:) (C1 (MetaCons "NoRulesApply" PrefixI False) U1) ((:+:) (C1 (MetaCons "MaxStepsExceeded" PrefixI False) U1) (C1 (MetaCons "HaltedByPredicate" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "StateError" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 StateError))) (C1 (MetaCons "StateTransition" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 StateTransition)))) ((:+:) (C1 (MetaCons "StateInitial" PrefixI False) U1) (C1 (MetaCons "GarbageCollection" PrefixI False) U1))))

data InfoDetail Source #

Used to store meta-information about state transitions in order to be rendered as a helpful hint.

Instances

Eq InfoDetail Source # 
Ord InfoDetail Source # 
Show InfoDetail Source # 
Generic InfoDetail Source # 

Associated Types

type Rep InfoDetail :: * -> * #

NFData InfoDetail Source # 

Methods

rnf :: InfoDetail -> () #

PrettyStgi InfoDetail Source # 
type Rep InfoDetail Source # 
type Rep InfoDetail = D1 (MetaData "InfoDetail" "Stg.Machine.Types" "stgi-1.1-LT0PoB9W7KUFnIHxeV3rhx" False) ((:+:) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "Detail_FunctionApplication" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Var)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Atom])))) (C1 (MetaCons "Detail_UnusedLocalVariables" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Var])) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Locals))))) ((:+:) (C1 (MetaCons "Detail_EnterNonUpdatable" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 MemAddr)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Mapping Var Value])))) (C1 (MetaCons "Detail_EvalLet" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Var])) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [MemAddr])))))) ((:+:) ((:+:) (C1 (MetaCons "Detail_EvalCase" PrefixI False) U1) (C1 (MetaCons "Detail_ReturnCon_Match" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Constr)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Var]))))) ((:+:) (C1 (MetaCons "Detail_ReturnConDefBound" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Var)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 MemAddr)))) (C1 (MetaCons "Detail_ReturnIntDefBound" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Var)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Integer))))))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "Detail_EnterUpdatable" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 MemAddr))) (C1 (MetaCons "Detail_ConUpdate" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Constr)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 MemAddr))))) ((:+:) (C1 (MetaCons "Detail_PapUpdate" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 MemAddr))) (C1 (MetaCons "Detail_ReturnIntCannotUpdate" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "Detail_StackNotEmpty" PrefixI False) U1) (C1 (MetaCons "Detail_GarbageCollected" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text)) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Set MemAddr))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Map MemAddr MemAddr))))))) ((:+:) (C1 (MetaCons "Detail_EnterBlackHole" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 MemAddr)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Integer)))) ((:+:) (C1 (MetaCons "Detail_UpdateClosureWithPrimitive" PrefixI False) U1) (C1 (MetaCons "Detail_BadConArity" PrefixI False) U1))))))

data StateTransition Source #

Classifies which rule has been applied in order to reach the current state.

Instances

Eq StateTransition Source # 
Ord StateTransition Source # 
Show StateTransition Source # 
Generic StateTransition Source # 
NFData StateTransition Source # 

Methods

rnf :: StateTransition -> () #

PrettyStgi StateTransition Source # 
type Rep StateTransition Source # 
type Rep StateTransition = D1 (MetaData "StateTransition" "Stg.Machine.Types" "stgi-1.1-LT0PoB9W7KUFnIHxeV3rhx" False) ((:+:) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "Rule1_Eval_FunctionApplication" PrefixI False) U1) (C1 (MetaCons "Rule2_Enter_NonUpdatableClosure" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Rule3_Eval_Let" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Rec))) (C1 (MetaCons "Rule4_Eval_Case" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "Rule5_Eval_AppC" PrefixI False) U1) (C1 (MetaCons "Rule6_ReturnCon_Match" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Rule7_ReturnCon_DefUnbound" PrefixI False) U1) ((:+:) (C1 (MetaCons "Rule8_ReturnCon_DefBound" PrefixI False) U1) (C1 (MetaCons "Rule9_Lit" PrefixI False) U1))))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "Rule10_LitApp" PrefixI False) U1) (C1 (MetaCons "Rule11_ReturnInt_Match" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Rule12_ReturnInt_DefBound" PrefixI False) U1) ((:+:) (C1 (MetaCons "Rule13_ReturnInt_DefUnbound" PrefixI False) U1) (C1 (MetaCons "Rule14_Eval_AppP" PrefixI False) U1)))) ((:+:) ((:+:) (C1 (MetaCons "Rule15_Enter_UpdatableClosure" PrefixI False) U1) (C1 (MetaCons "Rule16_ReturnCon_Update" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Rule17_Enter_PartiallyAppliedUpdate" PrefixI False) U1) ((:+:) (C1 (MetaCons "Rule17a_Enter_PartiallyAppliedUpdate" PrefixI False) U1) (C1 (MetaCons "Rule1819_Eval_Case_Primop_Shortcut" PrefixI False) U1))))))

data StateError Source #

Like StateTransition, but for invalid transitions.

Instances

Eq StateError Source # 
Ord StateError Source # 
Show StateError Source # 
Generic StateError Source # 

Associated Types

type Rep StateError :: * -> * #

NFData StateError Source # 

Methods

rnf :: StateError -> () #

PrettyStgi StateError Source # 
type Rep StateError Source # 
type Rep StateError = D1 (MetaData "StateError" "Stg.Machine.Types" "stgi-1.1-LT0PoB9W7KUFnIHxeV3rhx" False) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "VariablesNotInScope" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 NotInScope))) (C1 (MetaCons "UpdatableClosureWithArgs" PrefixI False) U1)) ((:+:) (C1 (MetaCons "ReturnIntWithEmptyReturnStack" PrefixI False) U1) ((:+:) (C1 (MetaCons "AlgReturnToPrimAlts" PrefixI False) U1) (C1 (MetaCons "PrimReturnToAlgAlts" PrefixI False) U1)))) ((:+:) ((:+:) (C1 (MetaCons "InitialStateCreationFailed" PrefixI False) U1) ((:+:) (C1 (MetaCons "EnterBlackhole" PrefixI False) U1) (C1 (MetaCons "UpdateClosureWithPrimitive" PrefixI False) U1))) ((:+:) (C1 (MetaCons "NonAlgPrimScrutinee" PrefixI False) U1) ((:+:) (C1 (MetaCons "DivisionByZero" PrefixI False) U1) (C1 (MetaCons "BadConArity" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))))))))

newtype NotInScope Source #

Type safety wrapper to report variables that were not in scope.

Constructors

NotInScope [Var] 

Instances

Eq NotInScope Source # 
Ord NotInScope Source # 
Show NotInScope Source # 
Generic NotInScope Source # 

Associated Types

type Rep NotInScope :: * -> * #

Semigroup NotInScope Source # 
Monoid NotInScope Source # 
NFData NotInScope Source # 

Methods

rnf :: NotInScope -> () #

PrettyStgi NotInScope Source # 
type Rep NotInScope Source # 
type Rep NotInScope = D1 (MetaData "NotInScope" "Stg.Machine.Types" "stgi-1.1-LT0PoB9W7KUFnIHxeV3rhx" True) (C1 (MetaCons "NotInScope" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Var])))