TcExpr

ghc-8.10.4: The GHC API

Safe Haskell | None
Language | Haskell2010

TcExpr

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
  - = SynAny
  - | SynRho
  - | SynList
  - | SynFun SyntaxOpType SyntaxOpType
  - | SynType ExpType
- 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 #

tcInferRho :: LHsExpr GhcRn -> TcM (LHsExpr GhcTcId, TcRhoType) Source #

tcInferRhoNC :: LHsExpr GhcRn -> TcM (LHsExpr GhcTcId, TcRhoType) Source #

tcSyntaxOp Source #

Arguments

:: 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 a variable or a lambda 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.

Constructors

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

tcCheckId :: Name -> ExpRhoType -> TcM (HsExpr GhcTcId) Source #

addExprErrCtxt :: LHsExpr GhcRn -> TcM a -> TcM a Source #

getFixedTyVars :: [FieldLabelString] -> [TyVar] -> [ConLike] -> TyVarSet Source #