- (HsExpr id pat) -- (typechecked, of course)
- (ArithSeqInfo id pat)
-
- | HsCCall CLabelString -- call into the C world; string is
- [HsExpr id pat] -- the C function; exprs are the
- -- arguments to pass.
- Safety -- True <=> might cause Haskell
- -- garbage-collection (must generate
- -- more paranoid code)
- Bool -- True <=> it's really a "casm"
- -- NOTE: this CCall is the *boxed*
- -- version; the desugarer will convert
- -- it into the unboxed "ccall#".
- PostTcType -- The result type; will be *bottom*
- -- until the typechecker gets ahold of it
-
- | HsSCC FAST_STRING -- "set cost centre" (_scc_) annotation
- (HsExpr id pat) -- expr whose cost is to be measured
-
+ (LHsExpr id) -- (typechecked, of course)
+ (ArithSeqInfo id)
+
+ | HsSCC FastString -- "set cost centre" (_scc_) annotation
+ (LHsExpr id) -- expr whose cost is to be measured
+
+ | HsCoreAnn FastString -- hdaume: core annotation
+ (LHsExpr id)
+
+ -----------------------------------------------------------
+ -- MetaHaskell Extensions
+ | HsBracket (HsBracket id)
+
+ | HsBracketOut (HsBracket Name) -- Output of the type checker is the *original*
+ [PendingSplice] -- renamed expression, plus *typechecked* splices
+ -- to be pasted back in by the desugarer
+
+ | HsSpliceE (HsSplice id)
+
+ -----------------------------------------------------------
+ -- Arrow notation extension
+
+ | HsProc (LPat id) -- arrow abstraction, proc
+ (LHsCmdTop id) -- body of the abstraction
+ -- always has an empty stack
+
+ ---------------------------------------
+ -- The following are commands, not expressions proper
+
+ | HsArrApp -- Arrow tail, or arrow application (f -< arg)
+ (LHsExpr id) -- arrow expression, f
+ (LHsExpr id) -- input expression, arg
+ PostTcType -- type of the arrow expressions f,
+ -- of the form a t t', where arg :: t
+ HsArrAppType -- higher-order (-<<) or first-order (-<)
+ Bool -- True => right-to-left (f -< arg)
+ -- False => left-to-right (arg >- f)
+
+ | HsArrForm -- Command formation, (| e cmd1 .. cmdn |)
+ (LHsExpr id) -- the operator
+ -- after type-checking, a type abstraction to be
+ -- applied to the type of the local environment tuple
+ (Maybe Fixity) -- fixity (filled in by the renamer), for forms that
+ -- were converted from OpApp's by the renamer
+ [LHsCmdTop id] -- argument commands