yhccore-0.9: Yhc's Internal Core language.

Yhc.Core.Invariant

Synopsis

Documentation

data Invariant Source

Note, not all combinations are yet implemented - they crash at runtime. If you want any invariant, just email the list.

Constructors

NoCoreLet

The CoreLet constructor must not occur. Removal reduces sharing

NoCorePos

The CorePos constructor must not occur.

CoreAppFun

All CoreFun's must be enclosed in a CoreApp.

CoreAppCon

All CoreCon's must be enclosed in a CoreApp.

NoEmptyApp

All CoreApp's must not have an empty argument list.

CoreCaseVar

All CoreCase's must be on a variable.

NoCaseDefault

All constructor CoreCase's must not contain a default.

NoCaseDefaultOne

All constructor CoreCase defaults must represent at least two constructors.

NoCaseConst

All CoreCase's must be on constructors, not constants.

NoRecursiveLet

CoreLet's must not be recursive. Removal reduces sharing in limited cases

NoCoreLam

The CoreLam constructor must not occur.

NoPartialAppPrim

No partial applications of CoreFun to a CorePrim

NoPartialAppCon

No partial applications of CoreCon

ConsecutiveFuncs

Low function numbers

UniqueVarsFunc

Unique variables in each function

UniqueVarsCore

Unique variables in the whole program

FuncArityAtMostOne

All CoreApp CoreFun's must have at most one argument directly present

FuncArityExactlyOne

All CoreApp CoreFun's must have exactly one argument present