ProgramNode
The intermediate level representation of a program.
Instances are created by elaborated.
Constructors
Functions
Returns a representation of this node in the surface syntax.
Properties
Extensions
Annotate parameters, declarations, and let nodes with protocols.
Performs all static checks on this program.
Returns this node and all its descendants in post order.
A FreshNameGenerator that will avoid all Variable names in this node.
Returns the declaration of mainFunction function in this program.
Returns an AST where every call site is specialized into new functions as much as possible. This allows for the most liberal protocol selection possible, at the cost of redundancy. The specializer will not specialize (mutually) recursive functions to prevent unbounded specialization.
Combines back ends for different protocols into one that supports all.
Combines multiple protocol composers into one.
Returns the union of all given maps.
Returns the union of all given sets.
Combines code generators for different protocols into one generator that can handle all protocols.
Combines given factories into a single factory that returns protocols from all of them.