<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >CoreSyn</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ></HEAD ><BODY ><DIV CLASS="outer" ><DIV CLASS="mini-topbar" >CoreSyn</DIV ><DIV CLASS="mini-synopsis" ><H1 >Main data types </H1 > <DIV CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="CoreSyn.html#t%3AExpr" TARGET="main" >Expr</A > b</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3AAlt" TARGET="main" >Alt</A > b</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="CoreSyn.html#t%3ABind" TARGET="main" >Bind</A > b</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="CoreSyn.html#t%3AAltCon" TARGET="main" >AltCon</A > </DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3AArg" TARGET="main" >Arg</A > b</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="CoreSyn.html#t%3ANote" TARGET="main" >Note</A > </DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3ACoreExpr" TARGET="main" >CoreExpr</A > </DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3ACoreAlt" TARGET="main" >CoreAlt</A > </DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3ACoreBind" TARGET="main" >CoreBind</A > </DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3ACoreArg" TARGET="main" >CoreArg</A > </DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3ACoreBndr" TARGET="main" >CoreBndr</A > </DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3ATaggedExpr" TARGET="main" >TaggedExpr</A > t</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3ATaggedAlt" TARGET="main" >TaggedAlt</A > t</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3ATaggedBind" TARGET="main" >TaggedBind</A > t</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3ATaggedArg" TARGET="main" >TaggedArg</A > t</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="CoreSyn.html#t%3ATaggedBndr" TARGET="main" >TaggedBndr</A > t</DIV > <H2 ><TT ><A HREF="CoreSyn.html#t%3AExpr" >Expr</A ></TT > construction </H2 > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkLets" TARGET="main" >mkLets</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkLams" TARGET="main" >mkLams</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkApps" TARGET="main" >mkApps</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkTyApps" TARGET="main" >mkTyApps</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkVarApps" TARGET="main" >mkVarApps</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkIntLit" TARGET="main" >mkIntLit</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkIntLitInt" TARGET="main" >mkIntLitInt</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkWordLit" TARGET="main" >mkWordLit</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkWordLitWord" TARGET="main" >mkWordLitWord</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkCharLit" TARGET="main" >mkCharLit</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkStringLit" TARGET="main" >mkStringLit</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkFloatLit" TARGET="main" >mkFloatLit</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkFloatLitFloat" TARGET="main" >mkFloatLitFloat</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkDoubleLit" TARGET="main" >mkDoubleLit</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkDoubleLitDouble" TARGET="main" >mkDoubleLitDouble</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkConApp" TARGET="main" >mkConApp</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkTyBind" TARGET="main" >mkTyBind</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AvarToCoreExpr" TARGET="main" >varToCoreExpr</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AvarsToCoreExprs" TARGET="main" >varsToCoreExprs</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisTyVar" TARGET="main" >isTyVar</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisId" TARGET="main" >isId</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AcmpAltCon" TARGET="main" >cmpAltCon</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AcmpAlt" TARGET="main" >cmpAlt</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AltAlt" TARGET="main" >ltAlt</A ></DIV > <H2 >Simple <TT ><A HREF="CoreSyn.html#t%3AExpr" >Expr</A ></TT > access functions and predicates </H2 > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AbindersOf" TARGET="main" >bindersOf</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AbindersOfBinds" TARGET="main" >bindersOfBinds</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3ArhssOfBind" TARGET="main" >rhssOfBind</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3ArhssOfAlts" TARGET="main" >rhssOfAlts</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AcollectBinders" TARGET="main" >collectBinders</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AcollectTyBinders" TARGET="main" >collectTyBinders</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AcollectValBinders" TARGET="main" >collectValBinders</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AcollectTyAndValBinders" TARGET="main" >collectTyAndValBinders</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AcollectArgs" TARGET="main" >collectArgs</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AcoreExprCc" TARGET="main" >coreExprCc</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AflattenBinds" TARGET="main" >flattenBinds</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisValArg" TARGET="main" >isValArg</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisTypeArg" TARGET="main" >isTypeArg</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AvalArgCount" TARGET="main" >valArgCount</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AvalBndrCount" TARGET="main" >valBndrCount</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisRuntimeArg" TARGET="main" >isRuntimeArg</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisRuntimeVar" TARGET="main" >isRuntimeVar</A ></DIV > <H1 >Unfolding data types </H1 > <DIV CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="CoreSyn.html#t%3AUnfolding" TARGET="main" >Unfolding</A > </DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="CoreSyn.html#t%3AUnfoldingGuidance" TARGET="main" >UnfoldingGuidance</A > </DIV > <H2 >Constructing <TT ><A HREF="CoreSyn.html#t%3AUnfolding" >Unfolding</A ></TT >s </H2 > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AnoUnfolding" TARGET="main" >noUnfolding</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AevaldUnfolding" TARGET="main" >evaldUnfolding</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmkOtherCon" TARGET="main" >mkOtherCon</A ></DIV > <H2 >Predicates and deconstruction on <TT ><A HREF="CoreSyn.html#t%3AUnfolding" >Unfolding</A ></TT > </H2 > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AunfoldingTemplate" TARGET="main" >unfoldingTemplate</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AmaybeUnfoldingTemplate" TARGET="main" >maybeUnfoldingTemplate</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AotherCons" TARGET="main" >otherCons</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisValueUnfolding" TARGET="main" >isValueUnfolding</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisEvaldUnfolding" TARGET="main" >isEvaldUnfolding</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisCheapUnfolding" TARGET="main" >isCheapUnfolding</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisExpandableUnfolding" TARGET="main" >isExpandableUnfolding</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisCompulsoryUnfolding" TARGET="main" >isCompulsoryUnfolding</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AhasUnfolding" TARGET="main" >hasUnfolding</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AhasSomeUnfolding" TARGET="main" >hasSomeUnfolding</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AneverUnfold" TARGET="main" >neverUnfold</A ></DIV > <H1 >Strictness </H1 > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AseqExpr" TARGET="main" >seqExpr</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AseqExprs" TARGET="main" >seqExprs</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AseqUnfolding" TARGET="main" >seqUnfolding</A ></DIV > <H1 >Annotated expression data types </H1 > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3AAnnExpr" TARGET="main" >AnnExpr</A > bndr annot</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="CoreSyn.html#t%3AAnnExpr%27" TARGET="main" >AnnExpr'</A > bndr annot</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="CoreSyn.html#t%3AAnnBind" TARGET="main" >AnnBind</A > bndr annot</DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3AAnnAlt" TARGET="main" >AnnAlt</A > bndr annot</DIV > <H2 >Operations on annotations </H2 > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AdeAnnotate" TARGET="main" >deAnnotate</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AdeAnnotate%27" TARGET="main" >deAnnotate'</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AdeAnnAlt" TARGET="main" >deAnnAlt</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AcollectAnnBndrs" TARGET="main" >collectAnnBndrs</A ></DIV > <H1 >Core rule data types </H1 > <DIV CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="CoreSyn.html#t%3ACoreRule" TARGET="main" >CoreRule</A > </DIV > <DIV CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="CoreSyn.html#t%3ARuleName" TARGET="main" >RuleName</A > </DIV > <H2 >Operations on <TT ><A HREF="CoreSyn.html#t%3ACoreRule" >CoreRule</A ></TT >s </H2 > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AseqRules" TARGET="main" >seqRules</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AruleArity" TARGET="main" >ruleArity</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AruleName" TARGET="main" >ruleName</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AruleIdName" TARGET="main" >ruleIdName</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AruleActivation_maybe" TARGET="main" >ruleActivation_maybe</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AsetRuleIdName" TARGET="main" >setRuleIdName</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisBuiltinRule" TARGET="main" >isBuiltinRule</A ></DIV > <DIV CLASS="decl" ><A HREF="CoreSyn.html#v%3AisLocalRule" TARGET="main" >isLocalRule</A ></DIV ></DIV ></DIV ></BODY ></HTML >