License | BSD-3-Clause |
---|---|
Maintainer | Jamie Willis |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Definitions for various encapsulating datatypes for machines, and defining free registers.
Since: 1.0.0.0
Synopsis
- data LetBinding o a x = LetBinding {}
- data Metadata
- data InputCharacteristic
- data Regs (rs :: [Type]) where
- makeLetBinding :: Binding o a x -> Set SomeΣVar -> Metadata -> LetBinding o a x
- newMeta :: Metadata
- successInputCharacteristic :: Metadata -> InputCharacteristic
- failureInputCharacteristic :: Metadata -> InputCharacteristic
- type Binding o a x = Fix4 (Instr o) '[] One x a
Documentation
data LetBinding o a x Source #
Packages a binding along with its free registers that are required
for it, which are left existential. This is possible since the Regs
datatype serves as a singleton-style witness of the original registers
and their types. It also requires Metadata
to be provided, sourced
from analysis.
Since: 1.5.0.0
This is used to store useful static information that can be used to guide code generation.
See successInputCharacteristic
, and failureInputCharacteristic
.
Since: 1.5.0.0
data InputCharacteristic Source #
Provides a way to describe how input is consumed in certain circumstances:
- The input may be always the same on all paths
- The input may always be consumed, but not the same on all paths
- The input may never be consumed in any path
- It may be inconsistent
Since: 1.5.0.0
AlwaysConsumes (Maybe Word) | On all paths, input must be consumed: |
NeverConsumes | On all paths, no input is consumed. |
MayConsume | The input characteristic is unknown or inconsistent. |
data Regs (rs :: [Type]) where Source #
Represents a collection of free registers, preserving their type information as a heterogeneous list.
Since: 1.0.0.0
makeLetBinding :: Binding o a x -> Set SomeΣVar -> Metadata -> LetBinding o a x Source #
Given a Binding
, a set of existential ΣVar
s, and some Metadata
, produces a
LetBinding
instance.
Since: 1.5.0.0
Produces a new Metadata
object, with fields initialised to sensible conservative
defaults.
Since: 1.5.0.0
successInputCharacteristic :: Metadata -> InputCharacteristic Source #
Characterises the way that a binding consumes input on success.
Since: 1.5.0.0
failureInputCharacteristic :: Metadata -> InputCharacteristic Source #
Characterises the way that a binding consumes input on failure.
Since: 1.5.0.0