+ | HsSCC FastString -- "set cost centre" (_scc_) annotation
+ (HsExpr id) -- expr whose cost is to be measured
+
+ | HsCoreAnn FastString -- hdaume: core annotation
+ (HsExpr id)
+
+ -----------------------------------------------------------
+ -- MetaHaskell Extensions
+ | HsBracket (HsBracket id) SrcLoc
+
+ | 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
+
+ | HsSplice id (HsExpr id) SrcLoc -- $z or $(f 4)
+ -- The id is just a unique name to
+ -- identify this splice point
+
+ | HsReify (HsReify id) -- reifyType t, reifyDecl i, reifyFixity
+
+ -----------------------------------------------------------
+ -- Arrow notation extension
+
+ | HsProc (Pat id) -- arrow abstraction, proc
+ (HsCmdTop id) -- body of the abstraction
+ -- always has an empty stack
+ SrcLoc
+
+ ---------------------------------------
+ -- The following are commands, not expressions proper
+
+ | HsArrApp -- Arrow tail, or arrow application (f -< arg)
+ (HsExpr id) -- arrow expression, f
+ (HsExpr 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)
+ SrcLoc
+
+ | HsArrForm -- Command formation, (| e cmd1 .. cmdn |)
+ (HsExpr 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
+ [HsCmdTop id] -- argument commands
+ SrcLoc