unison-runtime-0.0.0
Safe HaskellNone
LanguageHaskell2010

Unison.Runtime.ANF.Convert

Description

Compiling Unison terms to ANF: closure conversion, lambda lifting and the translation itself. The ANF it produces, and everything the runtime does with it, is in Unison.Runtime.ANF.

Documentation

minimizeCyclesOrCrash :: (Var v, Ord a) => Term v a -> Term v a Source #

data FloatName v Source #

Constructors

FloatName [FloatSeg v] 

close :: (Var v, Monoid a) => Set v -> Term v a -> Term v a Source #

float :: (Var v, Monoid a) => Map v Reference -> Term v a -> (Term v a, Map Reference Reference, Map Reference (FloatName v), [(Reference, Term v a)], [(Reference, Term v a)]) Source #

floatGroup :: (Var v, Monoid a) => Map v Reference -> [(v, Term v a)] -> ([(v, Id)], [(Reference, FloatName v)], [(Reference, Term v a)], [(Reference, Term v a)]) Source #

lamLift :: (Var v, Monoid a) => Map v Reference -> Term v a -> (Term v a, Map Reference Reference, Map Reference (FloatName v), [(Reference, Term v a)], [(Reference, Term v a)]) Source #

lamLiftGroup :: (Var v, Monoid a) => Map v Reference -> [(v, Term v a)] -> ([(v, Id)], [(Reference, FloatName v)], [(Reference, Term v a)], [(Reference, Term v a)]) Source #

inlineAlias :: (Var v, Monoid a) => Term v a -> Term v a Source #

addDefaultCases :: (Var v, Monoid a) => Text -> Term v a -> Term v a Source #

anfTerm :: Var v => Term v a -> ANFM v (DNormal v) Source #