Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- simplifyInfer :: TcLevel -> InferMode -> [TcIdSigInst] -> [(Name, TcTauType)] -> WantedConstraints -> TcM ([TcTyVar], [EvVar], TcEvBinds, Bool)
- data InferMode
- growThetaTyVars :: ThetaType -> TyCoVarSet -> TyVarSet
- simplifyAmbiguityCheck :: Type -> WantedConstraints -> TcM ()
- simplifyDefault :: ThetaType -> TcM ()
- simplifyTop :: WantedConstraints -> TcM (Bag EvBind)
- simplifyTopImplic :: Bag Implication -> TcM ()
- captureTopConstraints :: TcM a -> TcM (a, WantedConstraints)
- simplifyInteractive :: WantedConstraints -> TcM (Bag EvBind)
- solveEqualities :: TcM a -> TcM a
- simplifyWantedsTcM :: [CtEvidence] -> TcM WantedConstraints
- tcCheckSatisfiability :: Bag EvVar -> TcM Bool
- tcSubsumes :: TcSigmaType -> TcSigmaType -> TcM Bool
- solveWanteds :: WantedConstraints -> TcS WantedConstraints
- solveWantedsAndDrop :: WantedConstraints -> TcS WantedConstraints
- approximateWC :: Bool -> WantedConstraints -> Cts
- runTcSDeriveds :: TcS a -> TcM a
Documentation
simplifyInfer :: TcLevel -> InferMode -> [TcIdSigInst] -> [(Name, TcTauType)] -> WantedConstraints -> TcM ([TcTyVar], [EvVar], TcEvBinds, Bool) Source #
How should we choose which constraints to quantify over?
ApplyMR | Apply the monomorphism restriction, never quantifying over any constraints |
EagerDefaulting | See Note [TcRnExprMode] in TcRnDriver, the :type +d case; this mode refuses to quantify over any defaultable constraint |
NoRestrictions | Quantify over any constraint that satisfies TcType.pickQuantifiablePreds |
growThetaTyVars :: ThetaType -> TyCoVarSet -> TyVarSet Source #
simplifyAmbiguityCheck :: Type -> WantedConstraints -> TcM () Source #
simplifyDefault :: ThetaType -> TcM () Source #
simplifyTop :: WantedConstraints -> TcM (Bag EvBind) Source #
simplifyTopImplic :: Bag Implication -> TcM () Source #
captureTopConstraints :: TcM a -> TcM (a, WantedConstraints) Source #
simplifyInteractive :: WantedConstraints -> TcM (Bag EvBind) Source #
solveEqualities :: TcM a -> TcM a Source #
Type-check a thing that emits only equality constraints, then solve those constraints. Fails outright if there is trouble.
tcSubsumes :: TcSigmaType -> TcSigmaType -> TcM Bool Source #
Reports whether first type (ty_a) subsumes the second type (ty_b), discarding any errors. Subsumption here means that the ty_b can fit into the ty_a, i.e. `tcSubsumes a b == True` if b is a subtype of a. N.B.: Make sure that the types contain all the constraints contained in any associated implications.
approximateWC :: Bool -> WantedConstraints -> Cts Source #