Moduleghc-9.10.3GHC2021
GHC.Tc.Gen.Expr
- 1 type
- 16 values
- Packageghc-9.10.3
- Exports17
- LanguageGHC2021
- LicenceBSD-3-Clause
- SourceExpr.hs
tcSyntaxOp :: CtOrigin-> SyntaxExprRn-> [SyntaxOpType]shape of syntax operator arguments
-> ExpRhoTypeoverall result type
-> ([TcSigmaType] -> [Mult] -> TcM a)Type check any arguments, takes a type per hole and a multiplicity per arrow in the shape.
-> TcM (a, SyntaxExprTc)
Typecheck a syntax operator The operator is a variable or a lambda at this stage (i.e. renamer output)t
Slightly more general version of tcSyntaxOp that allows the caller to specify the shape of the result of the syntax operator
What to expect for an argument to a rebindable-syntax operator. Quite like Type, but allows for holes to be filled in by tcSyntaxOp. The callback called from tcSyntaxOp gets a list of types; the meaning of these types is determined by a left-to-right depth-first traversal of the SyntaxOpType tree. So if you pass in
SynAny `SynFun` (SynList `SynFun` SynType Int) `SynFun` SynAnyyou'll get three types back: one for the first SynAny, the element type of the list, and one for the last SynAny. You don't get anything for the SynType, because you've said positively that it should be an Int, and so it shall be.
You'll also get three multiplicities back: one for each function arrow. See also Note [Linear types] in Multiplicity.
This is defined here to avoid defining it in GHC.Tc.Gen.Expr boot file.
Constructors
SynAnyAny type
SynRhoA rho type, skolemised or instantiated as appropriate
SynListA list type. You get back the element type of the list
SynFun SyntaxOpType SyntaxOpTypeinfixr 0A function.
SynType ExpTypeA known type.
Like SynType but accepts a regular TcType