Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 2888

ghc-7.4.2-4.mga5.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GhcMonad</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_GhcMonad.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">GhcMonad</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1"><code><a href="GhcMonad.html#t:Ghc">Ghc</a></code> monad stuff
</a><ul><li><a href="#g:2">Warnings
</a></li></ul></li></ul></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">class</span> (<a href="../base-4.5.1.0/Control-Monad.html#t:Functor">Functor</a> m, <a href="MonadUtils.html#t:MonadIO">MonadIO</a> m, <a href="Exception.html#t:ExceptionMonad">ExceptionMonad</a> m) =&gt; <a href="#t:GhcMonad">GhcMonad</a> m  <span class="keyword">where</span><ul class="subs"><li><a href="#v:getSession">getSession</a> :: m <a href="HscTypes.html#t:HscEnv">HscEnv</a></li><li><a href="#v:setSession">setSession</a> :: <a href="HscTypes.html#t:HscEnv">HscEnv</a> -&gt; m ()</li></ul></li><li class="src short"><span class="keyword">newtype</span>  <a href="#t:Ghc">Ghc</a> a = <a href="#v:Ghc">Ghc</a> {<ul class="subs"><li><a href="#v:unGhc">unGhc</a> :: <a href="GhcMonad.html#t:Session">Session</a> -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> a</li></ul>}</li><li class="src short"><span class="keyword">newtype</span>  <a href="#t:GhcT">GhcT</a> m a = <a href="#v:GhcT">GhcT</a> {<ul class="subs"><li><a href="#v:unGhcT">unGhcT</a> :: <a href="GhcMonad.html#t:Session">Session</a> -&gt; m a</li></ul>}</li><li class="src short"><a href="#v:liftGhcT">liftGhcT</a> :: <a href="../base-4.5.1.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; m a -&gt; <a href="GhcMonad.html#t:GhcT">GhcT</a> m a</li><li class="src short"><a href="#v:reflectGhc">reflectGhc</a> ::  <a href="GhcMonad.html#t:Ghc">Ghc</a> a -&gt; <a href="GhcMonad.html#t:Session">Session</a> -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> a</li><li class="src short"><a href="#v:reifyGhc">reifyGhc</a> ::  (<a href="GhcMonad.html#t:Session">Session</a> -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> a) -&gt; <a href="GhcMonad.html#t:Ghc">Ghc</a> a</li><li class="src short"><a href="#v:getSessionDynFlags">getSessionDynFlags</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; m <a href="DynFlags.html#t:DynFlags">DynFlags</a></li><li class="src short"><a href="#v:liftIO">liftIO</a> :: <a href="MonadUtils.html#t:MonadIO">MonadIO</a> m =&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> a -&gt; m a</li><li class="src short"><span class="keyword">data</span>  <a href="#t:Session">Session</a>  = <a href="#v:Session">Session</a> !(<a href="IOEnv.html#t:IORef">IORef</a> <a href="HscTypes.html#t:HscEnv">HscEnv</a>)</li><li class="src short"><a href="#v:withSession">withSession</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; (<a href="HscTypes.html#t:HscEnv">HscEnv</a> -&gt; m a) -&gt; m a</li><li class="src short"><a href="#v:modifySession">modifySession</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; (<a href="HscTypes.html#t:HscEnv">HscEnv</a> -&gt; <a href="HscTypes.html#t:HscEnv">HscEnv</a>) -&gt; m ()</li><li class="src short"><a href="#v:withTempSession">withTempSession</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; (<a href="HscTypes.html#t:HscEnv">HscEnv</a> -&gt; <a href="HscTypes.html#t:HscEnv">HscEnv</a>) -&gt; m a -&gt; m a</li><li class="src short"><a href="#v:logWarnings">logWarnings</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; <a href="ErrUtils.html#t:WarningMessages">WarningMessages</a> -&gt; m ()</li><li class="src short"><a href="#v:printException">printException</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; <a href="HscTypes.html#t:SourceError">SourceError</a> -&gt; m ()</li><li class="src short"><a href="#v:printExceptionAndWarnings">printExceptionAndWarnings</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; <a href="HscTypes.html#t:SourceError">SourceError</a> -&gt; m ()</li><li class="src short"><span class="keyword">type</span> <a href="#t:WarnErrLogger">WarnErrLogger</a> = <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="HscTypes.html#t:SourceError">SourceError</a> -&gt; m ()</li><li class="src short"><a href="#v:defaultWarnErrLogger">defaultWarnErrLogger</a> :: <a href="GhcMonad.html#t:WarnErrLogger">WarnErrLogger</a></li></ul></div><div id="interface"><h1 id="g:1"><code><a href="GhcMonad.html#t:Ghc">Ghc</a></code> monad stuff
</h1><div class="top"><p class="src"><span class="keyword">class</span> (<a href="../base-4.5.1.0/Control-Monad.html#t:Functor">Functor</a> m, <a href="MonadUtils.html#t:MonadIO">MonadIO</a> m, <a href="Exception.html#t:ExceptionMonad">ExceptionMonad</a> m) =&gt; <a name="t:GhcMonad" class="def">GhcMonad</a> m  <span class="keyword">where</span></p><div class="doc"><p>A monad that has all the features needed by GHC API calls.
</p><p>In short, a GHC monad
</p><ul><li> allows embedding of IO actions,
</li><li> can log warnings,
</li><li> allows handling of (extensible) exceptions, and
</li><li> maintains a current session.
</li></ul><p>If you do not use <code><a href="GhcMonad.html#t:Ghc">Ghc</a></code> or <code><a href="GhcMonad.html#t:GhcT">GhcT</a></code>, make sure to call <code><a href="GHC.html#v:initGhcMonad">initGhcMonad</a></code>
 before any call to the GHC API functions can occur.
</p></div><div class="subs methods"><p class="caption">Methods</p><p class="src"><a name="v:getSession" class="def">getSession</a> :: m <a href="HscTypes.html#t:HscEnv">HscEnv</a></p><p class="src"><a name="v:setSession" class="def">setSession</a> :: <a href="HscTypes.html#t:HscEnv">HscEnv</a> -&gt; m ()</p></div><div class="subs instances"><p id="control.i:GhcMonad" class="caption collapser" onclick="toggleSection('i:GhcMonad')">Instances</p><div id="section.i:GhcMonad" class="show"><table><tr><td class="src"><a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> <a href="GhcMonad.html#t:Ghc">Ghc</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="../base-4.5.1.0/Control-Monad.html#t:Functor">Functor</a> m, <a href="Exception.html#t:ExceptionMonad">ExceptionMonad</a> m, <a href="MonadUtils.html#t:MonadIO">MonadIO</a> m) =&gt; <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> (<a href="GhcMonad.html#t:GhcT">GhcT</a> m)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span>  <a name="t:Ghc" class="def">Ghc</a> a </p><div class="doc"><p>A minimal implementation of a <code><a href="GhcMonad.html#t:GhcMonad">GhcMonad</a></code>.  If you need a custom monad,
 e.g., to maintain additional state consider wrapping this monad or using
 <code><a href="GhcMonad.html#t:GhcT">GhcT</a></code>.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Ghc" class="def">Ghc</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:unGhc" class="def">unGhc</a> :: <a href="GhcMonad.html#t:Session">Session</a> -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:Ghc" class="caption collapser" onclick="toggleSection('i:Ghc')">Instances</p><div id="section.i:Ghc" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Control-Monad.html#t:Monad">Monad</a> <a href="GhcMonad.html#t:Ghc">Ghc</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Control-Monad.html#t:Functor">Functor</a> <a href="GhcMonad.html#t:Ghc">Ghc</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="MonadUtils.html#t:MonadFix">MonadFix</a> <a href="GhcMonad.html#t:Ghc">Ghc</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Exception.html#t:ExceptionMonad">ExceptionMonad</a> <a href="GhcMonad.html#t:Ghc">Ghc</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="MonadUtils.html#t:MonadIO">MonadIO</a> <a href="GhcMonad.html#t:Ghc">Ghc</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> <a href="GhcMonad.html#t:Ghc">Ghc</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">newtype</span>  <a name="t:GhcT" class="def">GhcT</a> m a </p><div class="doc"><p>A monad transformer to add GHC specific features to another monad.
</p><p>Note that the wrapped monad must support IO and handling of exceptions.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:GhcT" class="def">GhcT</a></td><td class="doc empty">&nbsp;</td></tr><tr><td colspan="2"><div class="subs fields"><p class="caption">Fields</p><dl><dt class="src"><a name="v:unGhcT" class="def">unGhcT</a> :: <a href="GhcMonad.html#t:Session">Session</a> -&gt; m a</dt><dd class="doc empty">&nbsp;</dd></dl><div class="clear"></div></div></td></tr></table></div><div class="subs instances"><p id="control.i:GhcT" class="caption collapser" onclick="toggleSection('i:GhcT')">Instances</p><div id="section.i:GhcT" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; <a href="../base-4.5.1.0/Control-Monad.html#t:Monad">Monad</a> (<a href="GhcMonad.html#t:GhcT">GhcT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Control-Monad.html#t:Functor">Functor</a> m =&gt; <a href="../base-4.5.1.0/Control-Monad.html#t:Functor">Functor</a> (<a href="GhcMonad.html#t:GhcT">GhcT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="Exception.html#t:ExceptionMonad">ExceptionMonad</a> m =&gt; <a href="Exception.html#t:ExceptionMonad">ExceptionMonad</a> (<a href="GhcMonad.html#t:GhcT">GhcT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="MonadUtils.html#t:MonadIO">MonadIO</a> m =&gt; <a href="MonadUtils.html#t:MonadIO">MonadIO</a> (<a href="GhcMonad.html#t:GhcT">GhcT</a> m)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">(<a href="../base-4.5.1.0/Control-Monad.html#t:Functor">Functor</a> m, <a href="Exception.html#t:ExceptionMonad">ExceptionMonad</a> m, <a href="MonadUtils.html#t:MonadIO">MonadIO</a> m) =&gt; <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> (<a href="GhcMonad.html#t:GhcT">GhcT</a> m)</td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:liftGhcT" class="def">liftGhcT</a> :: <a href="../base-4.5.1.0/Control-Monad.html#t:Monad">Monad</a> m =&gt; m a -&gt; <a href="GhcMonad.html#t:GhcT">GhcT</a> m a</p></div><div class="top"><p class="src"><a name="v:reflectGhc" class="def">reflectGhc</a> ::  <a href="GhcMonad.html#t:Ghc">Ghc</a> a -&gt; <a href="GhcMonad.html#t:Session">Session</a> -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> a</p><div class="doc"><p>Reflect a computation in the <code><a href="GhcMonad.html#t:Ghc">Ghc</a></code> monad into the <code><a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a></code> monad.
</p><p>You can use this to call functions returning an action in the <code><a href="GhcMonad.html#t:Ghc">Ghc</a></code> monad
 inside an <code><a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a></code> action.  This is needed for some (too restrictive) callback
 arguments of some library functions:
</p><pre> libFunc :: String -&gt; (Int -&gt; IO a) -&gt; IO a
 ghcFunc :: Int -&gt; Ghc a

 ghcFuncUsingLibFunc :: String -&gt; Ghc a -&gt; Ghc a
 ghcFuncUsingLibFunc str =
   reifyGhc $ \s -&gt;
     libFunc $ \i -&gt; do
       reflectGhc (ghcFunc i) s
</pre></div></div><div class="top"><p class="src"><a name="v:reifyGhc" class="def">reifyGhc</a> ::  (<a href="GhcMonad.html#t:Session">Session</a> -&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> a) -&gt; <a href="GhcMonad.html#t:Ghc">Ghc</a> a</p></div><div class="top"><p class="src"><a name="v:getSessionDynFlags" class="def">getSessionDynFlags</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; m <a href="DynFlags.html#t:DynFlags">DynFlags</a></p><div class="doc"><p>Grabs the DynFlags from the Session
</p></div></div><div class="top"><p class="src"><a name="v:liftIO" class="def">liftIO</a> :: <a href="MonadUtils.html#t:MonadIO">MonadIO</a> m =&gt; <a href="../base-4.5.1.0/System-IO.html#t:IO">IO</a> a -&gt; m a</p></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Session" class="def">Session</a>  </p><div class="doc"><p>The Session is a handle to the complete state of a compilation
 session.  A compilation session consists of a set of modules
 constituting the current program or library, the context for
 interactive evaluation, and various caches.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Session" class="def">Session</a> !(<a href="IOEnv.html#t:IORef">IORef</a> <a href="HscTypes.html#t:HscEnv">HscEnv</a>)</td><td class="doc empty">&nbsp;</td></tr></table></div></div><div class="top"><p class="src"><a name="v:withSession" class="def">withSession</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; (<a href="HscTypes.html#t:HscEnv">HscEnv</a> -&gt; m a) -&gt; m a</p><div class="doc"><p>Call the argument with the current session.
</p></div></div><div class="top"><p class="src"><a name="v:modifySession" class="def">modifySession</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; (<a href="HscTypes.html#t:HscEnv">HscEnv</a> -&gt; <a href="HscTypes.html#t:HscEnv">HscEnv</a>) -&gt; m ()</p><div class="doc"><p>Set the current session to the result of applying the current session to
 the argument.
</p></div></div><div class="top"><p class="src"><a name="v:withTempSession" class="def">withTempSession</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; (<a href="HscTypes.html#t:HscEnv">HscEnv</a> -&gt; <a href="HscTypes.html#t:HscEnv">HscEnv</a>) -&gt; m a -&gt; m a</p><div class="doc"><p>Call an action with a temporarily modified Session.
</p></div></div><h2 id="g:2">Warnings
</h2><div class="top"><p class="src"><a name="v:logWarnings" class="def">logWarnings</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; <a href="ErrUtils.html#t:WarningMessages">WarningMessages</a> -&gt; m ()</p><div class="doc"><p>A monad that allows logging of warnings.
</p></div></div><div class="top"><p class="src"><a name="v:printException" class="def">printException</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; <a href="HscTypes.html#t:SourceError">SourceError</a> -&gt; m ()</p><div class="doc"><p>Print the error message and all warnings.  Useful inside exception
   handlers.  Clears warnings after printing.
</p></div></div><div class="top"><p class="src"><a name="v:printExceptionAndWarnings" class="def">printExceptionAndWarnings</a> :: <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; <a href="HscTypes.html#t:SourceError">SourceError</a> -&gt; m ()</p><div class="doc"><div class="warning"><p>Deprecated: use printException instead</p></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:WarnErrLogger" class="def">WarnErrLogger</a> = <a href="GhcMonad.html#t:GhcMonad">GhcMonad</a> m =&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="HscTypes.html#t:SourceError">SourceError</a> -&gt; m ()</p><div class="doc"><p>A function called to log warnings and errors.
</p></div></div><div class="top"><p class="src"><a name="v:defaultWarnErrLogger" class="def">defaultWarnErrLogger</a> :: <a href="GhcMonad.html#t:WarnErrLogger">WarnErrLogger</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>