technique-0.2.5: Procedures and Sequences
Safe HaskellNone
LanguageHaskell2010

Technique.Internal

Description

Builing blocks for the translation stage of the compiler.

Synopsis

Documentation

newtype Promise Source #

Constructors

Promise Value 

data Value Source #

The resolved value of eiter a literal or function applicaiton, either as that literal, the expression, or as the result of waiting on the variable it was assigned to.

Need names? Science names newly discovered creatures in Latin. I don't speak Latin, but neither does anyone else so we can just make words up. Yeay! (The lengths some people will go to in order to avoid qualified imports is really impressive, isn't it?)

Instances

Instances details
Eq Value Source # 
Instance details

Defined in Technique.Internal

Methods

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

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

Show Value Source # 
Instance details

Defined in Technique.Internal

Methods

showsPrec :: Int -> Value -> ShowS #

show :: Value -> String #

showList :: [Value] -> ShowS #

Render Value Source # 
Instance details

Defined in Technique.Diagnostics

Associated Types

type Token Value #

type Token Value Source # 
Instance details

Defined in Technique.Diagnostics

data Function Source #

The internal representation of a Procedure, with ambiguities resolved.

We landed on Subroutine as the name of translated user-defined Procedure.

Procedures which are actually fundamental [in the context of the domain specific language] represented by builtin IO actions which we call Primatives.

The first constructor, Unresolved, is for the first stage pass through the translate phase when we are still accumulating definitions, thereby allowing for the forward use of not-yet-defiend procedures that will be encountered in the same scope.

Instances

Instances details
Eq Function Source # 
Instance details

Defined in Technique.Internal

Show Function Source # 
Instance details

Defined in Technique.Internal

Render Function Source # 
Instance details

Defined in Technique.Diagnostics

Associated Types

type Token Function #

type Token Function Source # 
Instance details

Defined in Technique.Diagnostics

newtype Name Source #

Constructors

Name Rope 

Instances

Instances details
Eq Name Source # 
Instance details

Defined in Technique.Internal

Methods

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

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

Show Name Source # 
Instance details

Defined in Technique.Internal

Methods

showsPrec :: Int -> Name -> ShowS #

show :: Name -> String #

showList :: [Name] -> ShowS #

Render Name Source # 
Instance details

Defined in Technique.Diagnostics

Associated Types

type Token Name #

type Token Name Source # 
Instance details

Defined in Technique.Diagnostics

data Step Source #

Names. Always needing names. These ones are from original work when we envisioned technique as a shallow embedding of a domain specific language implemented in Haskell. Comments describing constructors are taken from a suggestion by Oleg Kiselyov on page 23 of his course "Typed Tagless Final Interpreters" that the constructors of a simply typed lambda calculus in this style could be considered a "minimal intuitionistic logic" which is absolutely fabulous.

Instances

Instances details
Eq Step Source # 
Instance details

Defined in Technique.Internal

Methods

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

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

Show Step Source # 
Instance details

Defined in Technique.Internal

Methods

showsPrec :: Int -> Step -> ShowS #

show :: Step -> String #

showList :: [Step] -> ShowS #

Semigroup Step Source # 
Instance details

Defined in Technique.Internal

Methods

(<>) :: Step -> Step -> Step #

sconcat :: NonEmpty Step -> Step #

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

Monoid Step Source # 
Instance details

Defined in Technique.Internal

Methods

mempty :: Step #

mappend :: Step -> Step -> Step #

mconcat :: [Step] -> Step #

Render Step Source # 
Instance details

Defined in Technique.Diagnostics

Associated Types

type Token Step #

Located Step Source # 
Instance details

Defined in Technique.Internal

type Token Step Source # 
Instance details

Defined in Technique.Diagnostics