Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- tcPolyExpr :: LHsExpr GhcRn -> TcSigmaType -> TcM (LHsExpr GhcTcId)
- tcMonoExpr :: LHsExpr GhcRn -> ExpRhoType -> TcM (LHsExpr GhcTcId)
- tcMonoExprNC :: LHsExpr GhcRn -> ExpRhoType -> TcM (LHsExpr GhcTcId)
- tcInferSigma :: LHsExpr GhcRn -> TcM (LHsExpr GhcTcId, TcSigmaType)
- tcInferSigmaNC :: LHsExpr GhcRn -> TcM (LHsExpr GhcTcId, TcSigmaType)
- tcInferRho :: LHsExpr GhcRn -> TcM (LHsExpr GhcTcId, TcRhoType)
- tcInferRhoNC :: LHsExpr GhcRn -> TcM (LHsExpr GhcTcId, TcRhoType)
- tcSyntaxOp :: CtOrigin -> SyntaxExpr GhcRn -> [SyntaxOpType] -> ExpRhoType -> ([TcSigmaType] -> TcM a) -> TcM (a, SyntaxExpr GhcTcId)
- tcSyntaxOpGen :: CtOrigin -> SyntaxExpr GhcRn -> [SyntaxOpType] -> SyntaxOpType -> ([TcSigmaType] -> TcM a) -> TcM (a, SyntaxExpr GhcTcId)
- data SyntaxOpType
- synKnownType :: TcType -> SyntaxOpType
- tcCheckId :: Name -> ExpRhoType -> TcM (HsExpr GhcTcId)
- addExprErrCtxt :: LHsExpr GhcRn -> TcM a -> TcM a
- getFixedTyVars :: [FieldLabelString] -> [TyVar] -> [ConLike] -> TyVarSet
Documentation
tcPolyExpr :: LHsExpr GhcRn -> TcSigmaType -> TcM (LHsExpr GhcTcId) Source #
tcMonoExpr :: LHsExpr GhcRn -> ExpRhoType -> TcM (LHsExpr GhcTcId) Source #
tcMonoExprNC :: LHsExpr GhcRn -> ExpRhoType -> TcM (LHsExpr GhcTcId) Source #
tcInferSigma :: LHsExpr GhcRn -> TcM (LHsExpr GhcTcId, TcSigmaType) Source #
tcInferSigmaNC :: LHsExpr GhcRn -> TcM (LHsExpr GhcTcId, TcSigmaType) Source #
:: CtOrigin | |
-> SyntaxExpr GhcRn | |
-> [SyntaxOpType] | shape of syntax operator arguments |
-> ExpRhoType | overall result type |
-> ([TcSigmaType] -> TcM a) | Type check any arguments |
-> TcM (a, SyntaxExpr GhcTcId) |
Typecheck a syntax operator The operator is always a variable at this stage (i.e. renamer output)
tcSyntaxOpGen :: CtOrigin -> SyntaxExpr GhcRn -> [SyntaxOpType] -> SyntaxOpType -> ([TcSigmaType] -> TcM a) -> TcM (a, SyntaxExpr GhcTcId) Source #
Slightly more general version of tcSyntaxOp
that allows the caller
to specify the shape of the result of the syntax operator
data SyntaxOpType Source #
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` SynAny
you'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.
This is defined here to avoid defining it in TcExpr.hs-boot.
SynAny | Any type |
SynRho | A rho type, deeply skolemised or instantiated as appropriate |
SynList | A list type. You get back the element type of the list |
SynFun SyntaxOpType SyntaxOpType infixr 0 | A function. |
SynType ExpType | A known type. |
synKnownType :: TcType -> SyntaxOpType Source #
Like SynType
but accepts a regular TcType
getFixedTyVars :: [FieldLabelString] -> [TyVar] -> [ConLike] -> TyVarSet Source #