HsBinds

ghc-8.0.0.20160204: The GHC API

Safe Haskell | None
Language | Haskell2010

HsBinds

Synopsis

- type HsLocalBinds id = HsLocalBindsLR id id
- data HsLocalBindsLR idL idR
  - = HsValBinds (HsValBindsLR idL idR)
  - | HsIPBinds (HsIPBinds idR)
  - | EmptyLocalBinds
- type HsValBinds id = HsValBindsLR id id
- data HsValBindsLR idL idR
  - = ValBindsIn (LHsBindsLR idL idR) [LSig idR]
  - | ValBindsOut [(RecFlag, LHsBinds idL)] [LSig Name]
- type LHsBind id = LHsBindLR id id
- type LHsBinds id = LHsBindsLR id id
- type HsBind id = HsBindLR id id
- type LHsBindsLR idL idR = Bag (LHsBindLR idL idR)
- type LHsBindLR idL idR = Located (HsBindLR idL idR)
- data HsBindLR idL idR
  - = FunBind {
    - fun_id :: Located idL
    - fun_matches :: MatchGroup idR (LHsExpr idR)
    - fun_co_fn :: HsWrapper
    - bind_fvs :: PostRn idL NameSet
    - fun_tick :: [Tickish Id]
    }
  - | PatBind {
    - pat_lhs :: LPat idL
    - pat_rhs :: GRHSs idR (LHsExpr idR)
    - pat_rhs_ty :: PostTc idR Type
    - bind_fvs :: PostRn idL NameSet
    - pat_ticks :: ([Tickish Id], [[Tickish Id]])
    }
  - | VarBind {
    - var_id :: idL
    - var_rhs :: LHsExpr idR
    - var_inline :: Bool
    }
  - | AbsBinds {
    - abs_tvs :: [TyVar]
    - abs_ev_vars :: [EvVar]
    - abs_exports :: [ABExport idL]
    - abs_ev_binds :: [TcEvBinds]
    - abs_binds :: LHsBinds idL
    }
  - | AbsBindsSig {
    - abs_tvs :: [TyVar]
    - abs_ev_vars :: [EvVar]
    - abs_sig_export :: idL
    - abs_sig_prags :: TcSpecPrags
    - abs_sig_ev_bind :: TcEvBinds
    - abs_sig_bind :: LHsBind idL
    }
  - | PatSynBind (PatSynBind idL idR)
- data ABExport id = ABE {
  - abe_poly :: id
  - abe_mono :: id
  - abe_inst_wrap :: HsWrapper
  - abe_wrap :: HsWrapper
  - abe_prags :: TcSpecPrags
  }
- data PatSynBind idL idR = PSB {
  - psb_id :: Located idL
  - psb_fvs :: PostRn idR NameSet
  - psb_args :: HsPatSynDetails (Located idR)
  - psb_def :: LPat idR
  - psb_dir :: HsPatSynDir idR
  }
- pprLHsBinds :: (OutputableBndr idL, OutputableBndr idR) => LHsBindsLR idL idR -> SDoc
- pprLHsBindsForUser :: (OutputableBndr idL, OutputableBndr idR, OutputableBndr id2) => LHsBindsLR idL idR -> [LSig id2] -> [SDoc]
- pprDeclList :: [SDoc] -> SDoc
- emptyLocalBinds :: HsLocalBindsLR a b
- isEmptyLocalBinds :: HsLocalBindsLR a b -> Bool
- isEmptyValBinds :: HsValBindsLR a b -> Bool
- emptyValBindsIn :: HsValBindsLR a b
- emptyValBindsOut :: HsValBindsLR a b
- emptyLHsBinds :: LHsBindsLR idL idR
- isEmptyLHsBinds :: LHsBindsLR idL idR -> Bool
- plusHsValBinds :: HsValBinds a -> HsValBinds a -> HsValBinds a
- ppr_monobind :: (OutputableBndr idL, OutputableBndr idR) => HsBindLR idL idR -> SDoc
- pprTicks :: SDoc -> SDoc -> SDoc
- data HsIPBinds id = IPBinds [LIPBind id] TcEvBinds
- isEmptyIPBinds :: HsIPBinds id -> Bool
- type LIPBind id = Located (IPBind id)
- data IPBind id = IPBind (Either (Located HsIPName) id) (LHsExpr id)
- type LSig name = Located (Sig name)
- data Sig name
  - = TypeSig [Located name] (LHsSigWcType name)
  - | PatSynSig (Located name) (LHsSigType name)
  - | ClassOpSig Bool [Located name] (LHsSigType name)
  - | IdSig Id
  - | FixSig (FixitySig name)
  - | InlineSig (Located name) InlinePragma
  - | SpecSig (Located name) [LHsSigType name] InlinePragma
  - | SpecInstSig SourceText (LHsSigType name)
  - | MinimalSig SourceText (LBooleanFormula (Located name))
- type LFixitySig name = Located (FixitySig name)
- data FixitySig name = FixitySig [Located name] Fixity
- data TcSpecPrags
  - = IsDefaultMethod
  - | SpecPrags [LTcSpecPrag]
- type LTcSpecPrag = Located TcSpecPrag
- data TcSpecPrag = SpecPrag Id HsWrapper InlinePragma
- noSpecPrags :: TcSpecPrags
- hasSpecPrags :: TcSpecPrags -> Bool
- isDefaultMethod :: TcSpecPrags -> Bool
- isFixityLSig :: LSig name -> Bool
- isTypeLSig :: LSig name -> Bool
- isSpecLSig :: LSig name -> Bool
- isSpecInstLSig :: LSig name -> Bool
- isPragLSig :: LSig name -> Bool
- isInlineLSig :: LSig name -> Bool
- isMinimalLSig :: LSig name -> Bool
- hsSigDoc :: Sig name -> SDoc
- ppr_sig :: OutputableBndr name => Sig name -> SDoc
- pprPatSynSig :: OutputableBndr name => name -> Bool -> SDoc -> Maybe SDoc -> Maybe SDoc -> SDoc -> SDoc
- pragBrackets :: SDoc -> SDoc
- pprVarSig :: OutputableBndr id => [id] -> SDoc -> SDoc
- pprSpec :: OutputableBndr id => id -> SDoc -> InlinePragma -> SDoc
- pprTcSpecPrags :: TcSpecPrags -> SDoc
- pprMinimalSig :: OutputableBndr name => LBooleanFormula (Located name) -> SDoc
- data HsPatSynDetails a
  - = InfixPatSyn a a
  - | PrefixPatSyn [a]
  - | RecordPatSyn [RecordPatSynField a]
- data RecordPatSynField a = RecordPatSynField {
  - recordPatSynSelectorId :: a
  - recordPatSynPatVar :: a
  }
- data HsPatSynDir id
  - = Unidirectional
  - | ImplicitBidirectional
  - | ExplicitBidirectional (MatchGroup id (LHsExpr id))

# Documentation

type HsLocalBinds id = HsLocalBindsLR id id Source

data HsLocalBindsLR idL idR Source

Bindings in a 'let' expression or a 'where' clause

Constructors

HsValBinds (HsValBindsLR idL idR) |
HsIPBinds (HsIPBinds idR) |
EmptyLocalBinds |

Instances

(DataId idL, DataId idR) => Data (HsLocalBindsLR idL idR) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsLocalBindsLR idL idR -> c (HsLocalBindsLR idL idR) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsLocalBindsLR idL idR) Source toConstr :: HsLocalBindsLR idL idR -> Constr Source dataTypeOf :: HsLocalBindsLR idL idR -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (HsLocalBindsLR idL idR)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsLocalBindsLR idL idR)) Source gmapT :: (forall b. Data b => b -> b) -> HsLocalBindsLR idL idR -> HsLocalBindsLR idL idR Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsLocalBindsLR idL idR -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsLocalBindsLR idL idR -> r Source gmapQ :: (forall d. Data d => d -> u) -> HsLocalBindsLR idL idR -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> HsLocalBindsLR idL idR -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsLocalBindsLR idL idR -> m (HsLocalBindsLR idL idR) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsLocalBindsLR idL idR -> m (HsLocalBindsLR idL idR) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsLocalBindsLR idL idR -> m (HsLocalBindsLR idL idR) Source
(OutputableBndr idL, OutputableBndr idR) => Outputable (HsLocalBindsLR idL idR) |
Methods ppr :: HsLocalBindsLR idL idR -> SDoc Source pprPrec :: Rational -> HsLocalBindsLR idL idR -> SDoc Source

type HsValBinds id = HsValBindsLR id id Source

data HsValBindsLR idL idR Source

Value bindings (not implicit parameters) Used for both top level and nested bindings May contain pattern synonym bindings

Constructors

ValBindsIn (LHsBindsLR idL idR) [LSig idR] | Before renaming RHS; idR is always RdrName Not dependency analysed Recursive by default
ValBindsOut [(RecFlag, LHsBinds idL)] [LSig Name] | After renaming RHS; idR can be Name or Id Dependency analysed, later bindings in the list may depend on earlier ones.

Instances

(DataId idL, DataId idR) => Data (HsValBindsLR idL idR) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsValBindsLR idL idR -> c (HsValBindsLR idL idR) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsValBindsLR idL idR) Source toConstr :: HsValBindsLR idL idR -> Constr Source dataTypeOf :: HsValBindsLR idL idR -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (HsValBindsLR idL idR)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsValBindsLR idL idR)) Source gmapT :: (forall b. Data b => b -> b) -> HsValBindsLR idL idR -> HsValBindsLR idL idR Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsValBindsLR idL idR -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsValBindsLR idL idR -> r Source gmapQ :: (forall d. Data d => d -> u) -> HsValBindsLR idL idR -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> HsValBindsLR idL idR -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsValBindsLR idL idR -> m (HsValBindsLR idL idR) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsValBindsLR idL idR -> m (HsValBindsLR idL idR) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsValBindsLR idL idR -> m (HsValBindsLR idL idR) Source
(OutputableBndr idL, OutputableBndr idR) => Outputable (HsValBindsLR idL idR) |
Methods ppr :: HsValBindsLR idL idR -> SDoc Source pprPrec :: Rational -> HsValBindsLR idL idR -> SDoc Source

type LHsBind id = LHsBindLR id id Source

type LHsBinds id = LHsBindsLR id id Source

type HsBind id = HsBindLR id id Source

type LHsBindsLR idL idR = Bag (LHsBindLR idL idR) Source

type LHsBindLR idL idR = Located (HsBindLR idL idR) Source

data HsBindLR idL idR Source

Constructors

FunBind | FunBind is used for both functions `f x = e` and variables `f = x -> e` Reason 1: Special case for type inference: see `tcMonoBinds`. Reason 2: Instance decls can only have FunBinds, which is convenient. If you change this, you'll need to change e.g. rnMethodBinds But note that the form `f :: a->a = ...` parses as a pattern binding, just like `(f :: a -> a) = ...` `AnnKeywordId`s `AnnFunId`, attached to each element of fun_matches `AnnEqual`,`AnnWhere`, `AnnOpen`,`AnnClose`,
- Fields fun_id :: Located idL fun_matches :: MatchGroup idR (LHsExpr idR) The payload fun_co_fn :: HsWrapper Coercion from the type of the MatchGroup to the type of the Id. Example:
           f :: Int -> forall a. a -> a
           f x y = y
Then the MatchGroup will have type (Int -> a' -> a') (with a free type variable a'). The coercion will take a CoreExpr of this type and convert it to a CoreExpr of type Int -> forall a'. a' -> a' Notice that the coercion captures the free a'. bind_fvs :: PostRn idL NameSet After the renamer, this contains the locally-bound free variables of this defn. See Note [Bind free vars] fun_tick :: [Tickish Id] Ticks to put on the rhs, if any
PatBind | The pattern is never a simple variable; That case is done by FunBind `AnnKeywordId` : `AnnBang`, `AnnEqual`,`AnnWhere`, `AnnOpen`,`AnnClose`,
Fields pat_lhs :: LPat idL pat_rhs :: GRHSs idR (LHsExpr idR) pat_rhs_ty :: PostTc idR Type Type of the GRHSs bind_fvs :: PostRn idL NameSet After the renamer, this contains the locally-bound free variables of this defn. See Note [Bind free vars] pat_ticks :: ([Tickish Id], [[Tickish Id]]) Ticks to put on the rhs, if any, and ticks to put on the bound variables.
VarBind | Dictionary binding and suchlike. All VarBinds are introduced by the type checker
Fields var_id :: idL var_rhs :: LHsExpr idR Located only for consistency var_inline :: Bool True = inline this binding regardless (used for implication constraints only)
AbsBinds |
Fields abs_tvs :: [TyVar] abs_ev_vars :: [EvVar] Includes equality constraints abs_exports :: [ABExport idL] AbsBinds only gets used when idL = idR after renaming, but these need to be idL's for the collect... code in HsUtil to have the right type abs_ev_binds :: [TcEvBinds] Evidence bindings Why a list? See TcInstDcls Note [Typechecking plan for instance declarations] abs_binds :: LHsBinds idL Typechecked user bindings
AbsBindsSig |
Fields abs_tvs :: [TyVar] abs_ev_vars :: [EvVar] Includes equality constraints abs_sig_export :: idL abs_sig_prags :: TcSpecPrags abs_sig_ev_bind :: TcEvBinds abs_sig_bind :: LHsBind idL
PatSynBind (PatSynBind idL idR) | `AnnKeywordId` : `AnnPattern`, `AnnLarrow`,`AnnEqual`, `AnnWhere` `AnnOpen` `'{'`,`AnnClose` `'}'`

Instances

(DataId idL, DataId idR) => Data (HsBindLR idL idR) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsBindLR idL idR -> c (HsBindLR idL idR) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsBindLR idL idR) Source toConstr :: HsBindLR idL idR -> Constr Source dataTypeOf :: HsBindLR idL idR -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (HsBindLR idL idR)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsBindLR idL idR)) Source gmapT :: (forall b. Data b => b -> b) -> HsBindLR idL idR -> HsBindLR idL idR Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsBindLR idL idR -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsBindLR idL idR -> r Source gmapQ :: (forall d. Data d => d -> u) -> HsBindLR idL idR -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> HsBindLR idL idR -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsBindLR idL idR -> m (HsBindLR idL idR) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsBindLR idL idR -> m (HsBindLR idL idR) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsBindLR idL idR -> m (HsBindLR idL idR) Source
(OutputableBndr idL, OutputableBndr idR) => Outputable (HsBindLR idL idR) |
Methods ppr :: HsBindLR idL idR -> SDoc Source pprPrec :: Rational -> HsBindLR idL idR -> SDoc Source

data ABExport id Source

Constructors

ABE |
Fields abe_poly :: id Any INLINE pragmas is attached to this Id abe_mono :: id abe_inst_wrap :: HsWrapper See Note [AbsBinds wrappers] ^ Shape: abe_mono ~ abe_insted abe_wrap :: HsWrapper See Note [AbsBinds wrappers] Shape: (forall abs_tvs. abs_ev_vars => abe_insted) ~ abe_poly abe_prags :: TcSpecPrags SPECIALISE pragmas

Instances

Data id => Data (ABExport id) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ABExport id -> c (ABExport id) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ABExport id) Source toConstr :: ABExport id -> Constr Source dataTypeOf :: ABExport id -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (ABExport id)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ABExport id)) Source gmapT :: (forall b. Data b => b -> b) -> ABExport id -> ABExport id Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ABExport id -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ABExport id -> r Source gmapQ :: (forall d. Data d => d -> u) -> ABExport id -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> ABExport id -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> ABExport id -> m (ABExport id) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ABExport id -> m (ABExport id) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ABExport id -> m (ABExport id) Source
OutputableBndr id => Outputable (ABExport id) |
Methods ppr :: ABExport id -> SDoc Source pprPrec :: Rational -> ABExport id -> SDoc Source

data PatSynBind idL idR Source

- `AnnKeywordId` : `AnnPattern`, `AnnEqual`,`AnnLarrow` `AnnWhere`,`AnnOpen` `'{'`, `AnnClose` `'}'`,

Constructors

PSB |
Fields psb_id :: Located idL Name of the pattern synonym psb_fvs :: PostRn idR NameSet See Note [Bind free vars] psb_args :: HsPatSynDetails (Located idR) Formal parameter names psb_def :: LPat idR Right-hand side psb_dir :: HsPatSynDir idR Directionality

Instances

(DataId idL, DataId idR) => Data (PatSynBind idL idR) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PatSynBind idL idR -> c (PatSynBind idL idR) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (PatSynBind idL idR) Source toConstr :: PatSynBind idL idR -> Constr Source dataTypeOf :: PatSynBind idL idR -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (PatSynBind idL idR)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (PatSynBind idL idR)) Source gmapT :: (forall b. Data b => b -> b) -> PatSynBind idL idR -> PatSynBind idL idR Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PatSynBind idL idR -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PatSynBind idL idR -> r Source gmapQ :: (forall d. Data d => d -> u) -> PatSynBind idL idR -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> PatSynBind idL idR -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> PatSynBind idL idR -> m (PatSynBind idL idR) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PatSynBind idL idR -> m (PatSynBind idL idR) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PatSynBind idL idR -> m (PatSynBind idL idR) Source
(OutputableBndr idL, OutputableBndr idR) => Outputable (PatSynBind idL idR) |
Methods ppr :: PatSynBind idL idR -> SDoc Source pprPrec :: Rational -> PatSynBind idL idR -> SDoc Source

pprLHsBinds :: (OutputableBndr idL, OutputableBndr idR) => LHsBindsLR idL idR -> SDoc Source

pprLHsBindsForUser :: (OutputableBndr idL, OutputableBndr idR, OutputableBndr id2) => LHsBindsLR idL idR -> [LSig id2] -> [SDoc] Source

pprDeclList :: [SDoc] -> SDoc Source

emptyLocalBinds :: HsLocalBindsLR a b Source

isEmptyLocalBinds :: HsLocalBindsLR a b -> Bool Source

isEmptyValBinds :: HsValBindsLR a b -> Bool Source

emptyValBindsIn :: HsValBindsLR a b Source

emptyValBindsOut :: HsValBindsLR a b Source

emptyLHsBinds :: LHsBindsLR idL idR Source

isEmptyLHsBinds :: LHsBindsLR idL idR -> Bool Source

plusHsValBinds :: HsValBinds a -> HsValBinds a -> HsValBinds a Source

ppr_monobind :: (OutputableBndr idL, OutputableBndr idR) => HsBindLR idL idR -> SDoc Source

pprTicks :: SDoc -> SDoc -> SDoc Source

data HsIPBinds id Source

Constructors

IPBinds [LIPBind id] TcEvBinds |

Instances

DataId id => Data (HsIPBinds id) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsIPBinds id -> c (HsIPBinds id) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsIPBinds id) Source toConstr :: HsIPBinds id -> Constr Source dataTypeOf :: HsIPBinds id -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (HsIPBinds id)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsIPBinds id)) Source gmapT :: (forall b. Data b => b -> b) -> HsIPBinds id -> HsIPBinds id Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsIPBinds id -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsIPBinds id -> r Source gmapQ :: (forall d. Data d => d -> u) -> HsIPBinds id -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> HsIPBinds id -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsIPBinds id -> m (HsIPBinds id) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsIPBinds id -> m (HsIPBinds id) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsIPBinds id -> m (HsIPBinds id) Source
OutputableBndr id => Outputable (HsIPBinds id) |
Methods ppr :: HsIPBinds id -> SDoc Source pprPrec :: Rational -> HsIPBinds id -> SDoc Source

isEmptyIPBinds :: HsIPBinds id -> Bool Source

type LIPBind id = Located (IPBind id) Source

May have `AnnKeywordId` : `AnnSemi` when in a list

data IPBind id Source

Implicit parameter bindings.

These bindings start off as (Left "x") in the parser and stay that way until after type-checking when they are replaced with (Right d), where "d" is the name of the dictionary holding the evidence for the implicit parameter.

- `AnnKeywordId` : `AnnEqual`

Constructors

IPBind (Either (Located HsIPName) id) (LHsExpr id) |

Instances

DataId name => Data (IPBind name) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IPBind name -> c (IPBind name) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (IPBind name) Source toConstr :: IPBind name -> Constr Source dataTypeOf :: IPBind name -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (IPBind name)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (IPBind name)) Source gmapT :: (forall b. Data b => b -> b) -> IPBind name -> IPBind name Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IPBind name -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IPBind name -> r Source gmapQ :: (forall d. Data d => d -> u) -> IPBind name -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> IPBind name -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> IPBind name -> m (IPBind name) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IPBind name -> m (IPBind name) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IPBind name -> m (IPBind name) Source
OutputableBndr id => Outputable (IPBind id) |
Methods ppr :: IPBind id -> SDoc Source pprPrec :: Rational -> IPBind id -> SDoc Source

type LSig name = Located (Sig name) Source

data Sig name Source

Signatures and pragmas

Constructors

TypeSig [Located name] (LHsSigWcType name) | An ordinary type signature
    f :: Num a => a -> a
After renaming, this list of Names contains the named and unnamed wildcards brought into scope by this signature. For a signature `_ -> _a -> Bool`, the renamer will give the unnamed wildcard `_` a freshly generated name, e.g. `_w`. `_w` and the named wildcard `_a` are then both replaced with fresh meta vars in the type. Their names are stored in the type signature that brought them into scope, in this third field to be more specific. `AnnKeywordId` : `AnnDcolon`, `AnnComma`
PatSynSig (Located name) (LHsSigType name) | A pattern synonym type signature
    pattern Single :: () => (Show a) => a -> [a]
`AnnKeywordId` : `AnnPattern`, `AnnDcolon`,`AnnForall` `AnnDot`,`AnnDarrow`
ClassOpSig Bool [Located name] (LHsSigType name) | A signature for a class method False: ordinary class-method signature True: default class method signature e.g. class C a where op :: a -> a -- Ordinary default op :: Eq a => a -> a -- Generic default No wildcards allowed here `AnnKeywordId` : `AnnDefault`, `AnnDcolon`
IdSig Id | A type signature in generated code, notably the code generated for record selectors. We simply record the desired Id itself, replete with its name, type and IdDetails. Otherwise it's just like a type signature: there should be an accompanying binding
FixSig (FixitySig name) | An ordinary fixity declaration
        infixl 8 ***
`AnnKeywordId` : `AnnInfix`, `AnnVal`
InlineSig (Located name) InlinePragma | An inline pragma
    {#- INLINE f #-}
`AnnKeywordId` : `AnnOpen` `'{-# INLINE'` and `'['`, `AnnClose`,`AnnOpen`, `AnnVal`,`AnnTilde`, `AnnClose`
SpecSig (Located name) [LHsSigType name] InlinePragma | A specialisation pragma
    {-# SPECIALISE f :: Int -> Int #-}
`AnnKeywordId` : `AnnOpen`, `AnnOpen` `'{-# SPECIALISE'` and `'['`, `AnnTilde`, `AnnVal`, `AnnClose` `']'` and `'#-}'`, `AnnDcolon`
SpecInstSig SourceText (LHsSigType name) | A specialisation pragma for instance declarations only
    {-# SPECIALISE instance Eq [Int] #-}
(Class tys); should be a specialisation of the current instance declaration `AnnKeywordId` : `AnnOpen`, `AnnInstance`,`AnnClose`
MinimalSig SourceText (LBooleanFormula (Located name)) | A minimal complete definition pragma
    {-# MINIMAL a | (b, c | (d | e)) #-}
`AnnKeywordId` : `AnnOpen`, `AnnVbar`,`AnnComma`, `AnnClose`

Instances

DataId name => Data (Sig name) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Sig name -> c (Sig name) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Sig name) Source toConstr :: Sig name -> Constr Source dataTypeOf :: Sig name -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (Sig name)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Sig name)) Source gmapT :: (forall b. Data b => b -> b) -> Sig name -> Sig name Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sig name -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sig name -> r Source gmapQ :: (forall d. Data d => d -> u) -> Sig name -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> Sig name -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> Sig name -> m (Sig name) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Sig name -> m (Sig name) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Sig name -> m (Sig name) Source
OutputableBndr name => Outputable (Sig name) |
Methods ppr :: Sig name -> SDoc Source pprPrec :: Rational -> Sig name -> SDoc Source

type LFixitySig name = Located (FixitySig name) Source

data FixitySig name Source

Constructors

FixitySig [Located name] Fixity |

Instances

Data name => Data (FixitySig name) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FixitySig name -> c (FixitySig name) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (FixitySig name) Source toConstr :: FixitySig name -> Constr Source dataTypeOf :: FixitySig name -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (FixitySig name)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (FixitySig name)) Source gmapT :: (forall b. Data b => b -> b) -> FixitySig name -> FixitySig name Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FixitySig name -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FixitySig name -> r Source gmapQ :: (forall d. Data d => d -> u) -> FixitySig name -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> FixitySig name -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> FixitySig name -> m (FixitySig name) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FixitySig name -> m (FixitySig name) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FixitySig name -> m (FixitySig name) Source
OutputableBndr name => Outputable (FixitySig name) |
Methods ppr :: FixitySig name -> SDoc Source pprPrec :: Rational -> FixitySig name -> SDoc Source

data TcSpecPrags Source

TsSpecPrags conveys pragmas from the type checker to the desugarer

Constructors

IsDefaultMethod | Super-specialised: a default method should be macro-expanded at every call site
SpecPrags [LTcSpecPrag] |

Instances

Data TcSpecPrags |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TcSpecPrags -> c TcSpecPrags Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TcSpecPrags Source toConstr :: TcSpecPrags -> Constr Source dataTypeOf :: TcSpecPrags -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c TcSpecPrags) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TcSpecPrags) Source gmapT :: (forall b. Data b => b -> b) -> TcSpecPrags -> TcSpecPrags Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TcSpecPrags -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TcSpecPrags -> r Source gmapQ :: (forall d. Data d => d -> u) -> TcSpecPrags -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> TcSpecPrags -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> TcSpecPrags -> m TcSpecPrags Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TcSpecPrags -> m TcSpecPrags Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TcSpecPrags -> m TcSpecPrags Source

type LTcSpecPrag = Located TcSpecPrag Source

data TcSpecPrag Source

Constructors

SpecPrag Id HsWrapper InlinePragma | The Id to be specialised, an wrapper that specialises the polymorphic function, and inlining spec for the specialised function

Instances

Data TcSpecPrag |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TcSpecPrag -> c TcSpecPrag Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TcSpecPrag Source toConstr :: TcSpecPrag -> Constr Source dataTypeOf :: TcSpecPrag -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c TcSpecPrag) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TcSpecPrag) Source gmapT :: (forall b. Data b => b -> b) -> TcSpecPrag -> TcSpecPrag Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TcSpecPrag -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TcSpecPrag -> r Source gmapQ :: (forall d. Data d => d -> u) -> TcSpecPrag -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> TcSpecPrag -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> TcSpecPrag -> m TcSpecPrag Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TcSpecPrag -> m TcSpecPrag Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TcSpecPrag -> m TcSpecPrag Source
Outputable TcSpecPrag |
Methods ppr :: TcSpecPrag -> SDoc Source pprPrec :: Rational -> TcSpecPrag -> SDoc Source

noSpecPrags :: TcSpecPrags Source

hasSpecPrags :: TcSpecPrags -> Bool Source

isDefaultMethod :: TcSpecPrags -> Bool Source

isFixityLSig :: LSig name -> Bool Source

isTypeLSig :: LSig name -> Bool Source

isSpecLSig :: LSig name -> Bool Source

isSpecInstLSig :: LSig name -> Bool Source

isPragLSig :: LSig name -> Bool Source

isInlineLSig :: LSig name -> Bool Source

isMinimalLSig :: LSig name -> Bool Source

hsSigDoc :: Sig name -> SDoc Source

ppr_sig :: OutputableBndr name => Sig name -> SDoc Source

pprPatSynSig :: OutputableBndr name => name -> Bool -> SDoc -> Maybe SDoc -> Maybe SDoc -> SDoc -> SDoc Source

pragBrackets :: SDoc -> SDoc Source

pprVarSig :: OutputableBndr id => [id] -> SDoc -> SDoc Source

pprSpec :: OutputableBndr id => id -> SDoc -> InlinePragma -> SDoc Source

pprTcSpecPrags :: TcSpecPrags -> SDoc Source

pprMinimalSig :: OutputableBndr name => LBooleanFormula (Located name) -> SDoc Source

data HsPatSynDetails a Source

Constructors

InfixPatSyn a a |
PrefixPatSyn [a] |
RecordPatSyn [RecordPatSynField a] |

Instances

Functor HsPatSynDetails |
Methods fmap :: (a -> b) -> HsPatSynDetails a -> HsPatSynDetails b Source (<$) :: a -> HsPatSynDetails b -> HsPatSynDetails a Source
Foldable HsPatSynDetails |
Methods fold :: Monoid m => HsPatSynDetails m -> m Source foldMap :: Monoid m => (a -> m) -> HsPatSynDetails a -> m Source foldr :: (a -> b -> b) -> b -> HsPatSynDetails a -> b Source foldr' :: (a -> b -> b) -> b -> HsPatSynDetails a -> b Source foldl :: (b -> a -> b) -> b -> HsPatSynDetails a -> b Source foldl' :: (b -> a -> b) -> b -> HsPatSynDetails a -> b Source foldr1 :: (a -> a -> a) -> HsPatSynDetails a -> a Source foldl1 :: (a -> a -> a) -> HsPatSynDetails a -> a Source toList :: HsPatSynDetails a -> [a] Source null :: HsPatSynDetails a -> Bool Source length :: HsPatSynDetails a -> Int Source elem :: Eq a => a -> HsPatSynDetails a -> Bool Source maximum :: Ord a => HsPatSynDetails a -> a Source minimum :: Ord a => HsPatSynDetails a -> a Source sum :: Num a => HsPatSynDetails a -> a Source product :: Num a => HsPatSynDetails a -> a Source
Traversable HsPatSynDetails |
Methods traverse :: Applicative f => (a -> f b) -> HsPatSynDetails a -> f (HsPatSynDetails b) Source sequenceA :: Applicative f => HsPatSynDetails (f a) -> f (HsPatSynDetails a) Source mapM :: Monad m => (a -> m b) -> HsPatSynDetails a -> m (HsPatSynDetails b) Source sequence :: Monad m => HsPatSynDetails (m a) -> m (HsPatSynDetails a) Source
Data a => Data (HsPatSynDetails a) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsPatSynDetails a -> c (HsPatSynDetails a) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsPatSynDetails a) Source toConstr :: HsPatSynDetails a -> Constr Source dataTypeOf :: HsPatSynDetails a -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (HsPatSynDetails a)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsPatSynDetails a)) Source gmapT :: (forall b. Data b => b -> b) -> HsPatSynDetails a -> HsPatSynDetails a Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsPatSynDetails a -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsPatSynDetails a -> r Source gmapQ :: (forall d. Data d => d -> u) -> HsPatSynDetails a -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> HsPatSynDetails a -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsPatSynDetails a -> m (HsPatSynDetails a) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsPatSynDetails a -> m (HsPatSynDetails a) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsPatSynDetails a -> m (HsPatSynDetails a) Source

data RecordPatSynField a Source

Constructors

RecordPatSynField |
Fields recordPatSynSelectorId :: a recordPatSynPatVar :: a

Instances

Functor RecordPatSynField |
Methods fmap :: (a -> b) -> RecordPatSynField a -> RecordPatSynField b Source (<$) :: a -> RecordPatSynField b -> RecordPatSynField a Source
Foldable RecordPatSynField |
Methods fold :: Monoid m => RecordPatSynField m -> m Source foldMap :: Monoid m => (a -> m) -> RecordPatSynField a -> m Source foldr :: (a -> b -> b) -> b -> RecordPatSynField a -> b Source foldr' :: (a -> b -> b) -> b -> RecordPatSynField a -> b Source foldl :: (b -> a -> b) -> b -> RecordPatSynField a -> b Source foldl' :: (b -> a -> b) -> b -> RecordPatSynField a -> b Source foldr1 :: (a -> a -> a) -> RecordPatSynField a -> a Source foldl1 :: (a -> a -> a) -> RecordPatSynField a -> a Source toList :: RecordPatSynField a -> [a] Source null :: RecordPatSynField a -> Bool Source length :: RecordPatSynField a -> Int Source elem :: Eq a => a -> RecordPatSynField a -> Bool Source maximum :: Ord a => RecordPatSynField a -> a Source minimum :: Ord a => RecordPatSynField a -> a Source sum :: Num a => RecordPatSynField a -> a Source product :: Num a => RecordPatSynField a -> a Source
Traversable RecordPatSynField |
Methods traverse :: Applicative f => (a -> f b) -> RecordPatSynField a -> f (RecordPatSynField b) Source sequenceA :: Applicative f => RecordPatSynField (f a) -> f (RecordPatSynField a) Source mapM :: Monad m => (a -> m b) -> RecordPatSynField a -> m (RecordPatSynField b) Source sequence :: Monad m => RecordPatSynField (m a) -> m (RecordPatSynField a) Source
Data a => Data (RecordPatSynField a) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RecordPatSynField a -> c (RecordPatSynField a) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (RecordPatSynField a) Source toConstr :: RecordPatSynField a -> Constr Source dataTypeOf :: RecordPatSynField a -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (RecordPatSynField a)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (RecordPatSynField a)) Source gmapT :: (forall b. Data b => b -> b) -> RecordPatSynField a -> RecordPatSynField a Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RecordPatSynField a -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RecordPatSynField a -> r Source gmapQ :: (forall d. Data d => d -> u) -> RecordPatSynField a -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> RecordPatSynField a -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> RecordPatSynField a -> m (RecordPatSynField a) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RecordPatSynField a -> m (RecordPatSynField a) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RecordPatSynField a -> m (RecordPatSynField a) Source
Outputable a => Outputable (RecordPatSynField a) |
Methods ppr :: RecordPatSynField a -> SDoc Source pprPrec :: Rational -> RecordPatSynField a -> SDoc Source

data HsPatSynDir id Source

Constructors

Unidirectional |
ImplicitBidirectional |
ExplicitBidirectional (MatchGroup id (LHsExpr id)) |

Instances

DataId id => Data (HsPatSynDir id) |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsPatSynDir id -> c (HsPatSynDir id) Source gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsPatSynDir id) Source toConstr :: HsPatSynDir id -> Constr Source dataTypeOf :: HsPatSynDir id -> DataType Source dataCast1 :: Typeable (TYPE Lifted -> TYPE Lifted) t => (forall d. Data d => c (t d)) -> Maybe (c (HsPatSynDir id)) Source dataCast2 :: Typeable (TYPE Lifted -> TYPE Lifted -> TYPE Lifted) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsPatSynDir id)) Source gmapT :: (forall b. Data b => b -> b) -> HsPatSynDir id -> HsPatSynDir id Source gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsPatSynDir id -> r Source gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsPatSynDir id -> r Source gmapQ :: (forall d. Data d => d -> u) -> HsPatSynDir id -> [u] Source gmapQi :: Int -> (forall d. Data d => d -> u) -> HsPatSynDir id -> u Source gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsPatSynDir id -> m (HsPatSynDir id) Source gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsPatSynDir id -> m (HsPatSynDir id) Source gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsPatSynDir id -> m (HsPatSynDir id) Source