ghc-7.2.2: The GHC API




type DsM result = TcRnIf DsGblEnv DsLclEnv resultSource

mapM :: Monad m => (a -> m b) -> [a] -> m [b]Source

mapM f is equivalent to sequence . map f.

mapAndUnzipM :: Monad m => (a -> m (b, c)) -> [a] -> m ([b], [c])Source

The mapAndUnzipM function maps its first argument over a list, returning the result as a pair of lists. This function is mainly used with complicated data structures or a state-transforming monad.

fixDs :: (a -> DsM a) -> DsM aSource

foldlM :: Monad m => (a -> b -> m a) -> a -> [b] -> m aSource

Monadic version of foldl

foldrM :: Monad m => (b -> a -> m a) -> a -> [b] -> m aSource

Monadic version of foldr

ifDOptM :: DynFlag -> TcRnIf gbl lcl () -> TcRnIf gbl lcl ()Source

Do it flag is true

unsetDOptM :: DynFlag -> TcRnIf gbl lcl a -> TcRnIf gbl lcl aSource

unsetWOptM :: WarningFlag -> TcRnIf gbl lcl a -> TcRnIf gbl lcl aSource

class Functor f => Applicative f whereSource

A functor with application, providing operations to

  • embed pure expressions (pure), and
  • sequence computations and combine their results (<*>).

A minimal complete definition must include implementations of these functions satisfying the following laws:

pure id <*> v = v
pure (.) <*> u <*> v <*> w = u <*> (v <*> w)
pure f <*> pure x = pure (f x)
u <*> pure y = pure ($ y) <*> u

The other methods have the following default definitions, which may be overridden with equivalent specialized implementations:

      u *> v = pure (const id) <*> u <*> v
      u <* v = pure const <*> u <*> v

As a consequence of these laws, the Functor instance for f will satisfy

      fmap f x = pure f <*> x

If f is also a Monad, it should satisfy pure = return and (<*>) = ap (which implies that pure and <*> satisfy the applicative functor laws).


pure :: a -> f aSource

Lift a value.

(<*>) :: f (a -> b) -> f a -> f bSource

Sequential application.

(*>) :: f a -> f b -> f bSource

Sequence actions, discarding the value of the first argument.

(<*) :: f a -> f b -> f aSource

Sequence actions, discarding the value of the second argument.

(<$>) :: Functor f => (a -> b) -> f a -> f bSource

An infix synonym for fmap.

data UniqSupply Source

A value of type UniqSupply is unique, and it can supply one distinct Unique. Also, from the supply, one can also manufacture an arbitrary number of further UniqueSupply values, which will be distinct from the first and from all others.

data DsMetaVal Source


Bound Id 
Splice (HsExpr Id) 

data EquationInfo Source




eqn_pats :: [Pat Id]
eqn_rhs :: MatchResult

data CanItFail Source