Sophie

Sophie

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

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>Distribution.Simple.Compiler</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_Distribution-Simple-Compiler.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">Cabal-1.14.0: A framework for packaging Haskell software</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Portability</th><td>portable</td></tr><tr><th>Maintainer</th><td>cabal-devel@haskell.org</td></tr><tr><th>Safe Haskell</th><td>Safe-Infered</td></tr></table><p class="caption">Distribution.Simple.Compiler</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">Haskell implementations
</a></li><li><a href="#g:2">Support for package databases
</a></li><li><a href="#g:3">Support for optimisation levels
</a></li><li><a href="#g:4">Support for language extensions
</a></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This should be a much more sophisticated abstraction than it is. Currently
 it's just a bit of data about the compiler, like it's flavour and name and
 version. The reason it's just data is because currently it has to be in
 <code><a href="../base-4.5.1.0/Text-Read.html#t:Read">Read</a></code> and <code><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a></code> so it can be saved along with the <code>LocalBuildInfo</code>. The
 only interesting bit of info it contains is a mapping between language
 extensions and compiler command line flags. This module also defines a
 <code><a href="Distribution-Simple-Compiler.html#t:PackageDB">PackageDB</a></code> type which is used to refer to package databases. Most compilers
 only know about a single global package collection but GHC has a global and
 per-user one and it lets you create arbitrary other package databases. We do
 not yet fully support this latter feature.
</p></div></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">module <a href="Distribution-Compiler.html">Distribution.Compiler</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:Compiler">Compiler</a>  = <a href="#v:Compiler">Compiler</a> {<ul class="subs"><li><a href="#v:compilerId">compilerId</a> :: <a href="Distribution-Compiler.html#t:CompilerId">CompilerId</a></li><li><a href="#v:compilerLanguages">compilerLanguages</a> :: [(<a href="Language-Haskell-Extension.html#t:Language">Language</a>, <a href="Distribution-Simple-Compiler.html#t:Flag">Flag</a>)]</li><li><a href="#v:compilerExtensions">compilerExtensions</a> :: [(<a href="Language-Haskell-Extension.html#t:Extension">Extension</a>, <a href="Distribution-Simple-Compiler.html#t:Flag">Flag</a>)]</li></ul>}</li><li class="src short"><a href="#v:showCompilerId">showCompilerId</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; <a href="../base-4.5.1.0/Data-String.html#t:String">String</a></li><li class="src short"><a href="#v:compilerFlavor">compilerFlavor</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; <a href="Distribution-Compiler.html#t:CompilerFlavor">CompilerFlavor</a></li><li class="src short"><a href="#v:compilerVersion">compilerVersion</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; <a href="Distribution-Version.html#t:Version">Version</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:PackageDB">PackageDB</a> <ul class="subs"><li>= <a href="#v:GlobalPackageDB">GlobalPackageDB</a>  </li><li>| <a href="#v:UserPackageDB">UserPackageDB</a>  </li><li>| <a href="#v:SpecificPackageDB">SpecificPackageDB</a> <a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a>  </li></ul></li><li class="src short"><span class="keyword">type</span> <a href="#t:PackageDBStack">PackageDBStack</a> = [<a href="Distribution-Simple-Compiler.html#t:PackageDB">PackageDB</a>]</li><li class="src short"><a href="#v:registrationPackageDB">registrationPackageDB</a> :: <a href="Distribution-Simple-Compiler.html#t:PackageDBStack">PackageDBStack</a> -&gt; <a href="Distribution-Simple-Compiler.html#t:PackageDB">PackageDB</a></li><li class="src short"><span class="keyword">data</span>  <a href="#t:OptimisationLevel">OptimisationLevel</a> <ul class="subs"><li>= <a href="#v:NoOptimisation">NoOptimisation</a>  </li><li>| <a href="#v:NormalOptimisation">NormalOptimisation</a>  </li><li>| <a href="#v:MaximumOptimisation">MaximumOptimisation</a>  </li></ul></li><li class="src short"><a href="#v:flagToOptimisationLevel">flagToOptimisationLevel</a> :: <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="../base-4.5.1.0/Data-String.html#t:String">String</a> -&gt; <a href="Distribution-Simple-Compiler.html#t:OptimisationLevel">OptimisationLevel</a></li><li class="src short"><span class="keyword">type</span> <a href="#t:Flag">Flag</a> = <a href="../base-4.5.1.0/Data-String.html#t:String">String</a></li><li class="src short"><a href="#v:languageToFlags">languageToFlags</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-Extension.html#t:Language">Language</a> -&gt; [<a href="Distribution-Simple-Compiler.html#t:Flag">Flag</a>]</li><li class="src short"><a href="#v:unsupportedLanguages">unsupportedLanguages</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; [<a href="Language-Haskell-Extension.html#t:Language">Language</a>] -&gt; [<a href="Language-Haskell-Extension.html#t:Language">Language</a>]</li><li class="src short"><a href="#v:extensionsToFlags">extensionsToFlags</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; [<a href="Language-Haskell-Extension.html#t:Extension">Extension</a>] -&gt; [<a href="Distribution-Simple-Compiler.html#t:Flag">Flag</a>]</li><li class="src short"><a href="#v:unsupportedExtensions">unsupportedExtensions</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; [<a href="Language-Haskell-Extension.html#t:Extension">Extension</a>] -&gt; [<a href="Language-Haskell-Extension.html#t:Extension">Extension</a>]</li></ul></div><div id="interface"><h1 id="g:1">Haskell implementations
</h1><div class="top"><p class="src">module <a href="Distribution-Compiler.html">Distribution.Compiler</a></p></div><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:Compiler" class="def">Compiler</a>  </p><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:Compiler" class="def">Compiler</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:compilerId" class="def">compilerId</a> :: <a href="Distribution-Compiler.html#t:CompilerId">CompilerId</a></dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:compilerLanguages" class="def">compilerLanguages</a> :: [(<a href="Language-Haskell-Extension.html#t:Language">Language</a>, <a href="Distribution-Simple-Compiler.html#t:Flag">Flag</a>)]</dt><dd class="doc empty">&nbsp;</dd><dt class="src"><a name="v:compilerExtensions" class="def">compilerExtensions</a> :: [(<a href="Language-Haskell-Extension.html#t:Extension">Extension</a>, <a href="Distribution-Simple-Compiler.html#t:Flag">Flag</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:Compiler" class="caption collapser" onclick="toggleSection('i:Compiler')">Instances</p><div id="section.i:Compiler" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Text-Read.html#t:Read">Read</a> <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:showCompilerId" class="def">showCompilerId</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; <a href="../base-4.5.1.0/Data-String.html#t:String">String</a></p></div><div class="top"><p class="src"><a name="v:compilerFlavor" class="def">compilerFlavor</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; <a href="Distribution-Compiler.html#t:CompilerFlavor">CompilerFlavor</a></p></div><div class="top"><p class="src"><a name="v:compilerVersion" class="def">compilerVersion</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; <a href="Distribution-Version.html#t:Version">Version</a></p></div><h1 id="g:2">Support for package databases
</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:PackageDB" class="def">PackageDB</a>  </p><div class="doc"><p>Some compilers have a notion of a database of available packages.
 For some there is just one global db of packages, other compilers
 support a per-user or an arbitrary db specified at some location in
 the file system. This can be used to build isloated environments of
 packages, for example to build a collection of related packages
 without installing them globally.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:GlobalPackageDB" class="def">GlobalPackageDB</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:UserPackageDB" class="def">UserPackageDB</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:SpecificPackageDB" class="def">SpecificPackageDB</a> <a href="../base-4.5.1.0/System-IO.html#t:FilePath">FilePath</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:PackageDB" class="caption collapser" onclick="toggleSection('i:PackageDB')">Instances</p><div id="section.i:PackageDB" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Distribution-Simple-Compiler.html#t:PackageDB">PackageDB</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Ord.html#t:Ord">Ord</a> <a href="Distribution-Simple-Compiler.html#t:PackageDB">PackageDB</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Read.html#t:Read">Read</a> <a href="Distribution-Simple-Compiler.html#t:PackageDB">PackageDB</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Distribution-Simple-Compiler.html#t:PackageDB">PackageDB</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:PackageDBStack" class="def">PackageDBStack</a> = [<a href="Distribution-Simple-Compiler.html#t:PackageDB">PackageDB</a>]</p><div class="doc"><p>We typically get packages from several databases, and stack them
 together. This type lets us be explicit about that stacking. For example
 typical stacks include:
</p><pre> [GlobalPackageDB]
 [GlobalPackageDB, UserPackageDB]
 [GlobalPackageDB, SpecificPackageDB &quot;package.conf.inplace&quot;]
</pre><p>Note that the <code><a href="Distribution-Simple-Compiler.html#v:GlobalPackageDB">GlobalPackageDB</a></code> is invariably at the bottom since it
 contains the rts, base and other special compiler-specific packages.
</p><p>We are not restricted to using just the above combinations. In particular
 we can use several custom package dbs and the user package db together.
</p><p>When it comes to writing, the top most (last) package is used.
</p></div></div><div class="top"><p class="src"><a name="v:registrationPackageDB" class="def">registrationPackageDB</a> :: <a href="Distribution-Simple-Compiler.html#t:PackageDBStack">PackageDBStack</a> -&gt; <a href="Distribution-Simple-Compiler.html#t:PackageDB">PackageDB</a></p><div class="doc"><p>Return the package that we should register into. This is the package db at
 the top of the stack.
</p></div></div><h1 id="g:3">Support for optimisation levels
</h1><div class="top"><p class="src"><span class="keyword">data</span>  <a name="t:OptimisationLevel" class="def">OptimisationLevel</a>  </p><div class="doc"><p>Some compilers support optimising. Some have different levels.
 For compliers that do not the level is just capped to the level
 they do support.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src"><a name="v:NoOptimisation" class="def">NoOptimisation</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:NormalOptimisation" class="def">NormalOptimisation</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a name="v:MaximumOptimisation" class="def">MaximumOptimisation</a></td><td class="doc empty">&nbsp;</td></tr></table></div><div class="subs instances"><p id="control.i:OptimisationLevel" class="caption collapser" onclick="toggleSection('i:OptimisationLevel')">Instances</p><div id="section.i:OptimisationLevel" class="show"><table><tr><td class="src"><a href="../base-4.5.1.0/Prelude.html#t:Bounded">Bounded</a> <a href="Distribution-Simple-Compiler.html#t:OptimisationLevel">OptimisationLevel</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Prelude.html#t:Enum">Enum</a> <a href="Distribution-Simple-Compiler.html#t:OptimisationLevel">OptimisationLevel</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> <a href="Distribution-Simple-Compiler.html#t:OptimisationLevel">OptimisationLevel</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Read.html#t:Read">Read</a> <a href="Distribution-Simple-Compiler.html#t:OptimisationLevel">OptimisationLevel</a></td><td class="doc empty">&nbsp;</td></tr><tr><td class="src"><a href="../base-4.5.1.0/Text-Show.html#t:Show">Show</a> <a href="Distribution-Simple-Compiler.html#t:OptimisationLevel">OptimisationLevel</a></td><td class="doc empty">&nbsp;</td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:flagToOptimisationLevel" class="def">flagToOptimisationLevel</a> :: <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="../base-4.5.1.0/Data-String.html#t:String">String</a> -&gt; <a href="Distribution-Simple-Compiler.html#t:OptimisationLevel">OptimisationLevel</a></p></div><h1 id="g:4">Support for language extensions
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:Flag" class="def">Flag</a> = <a href="../base-4.5.1.0/Data-String.html#t:String">String</a></p></div><div class="top"><p class="src"><a name="v:languageToFlags" class="def">languageToFlags</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="Language-Haskell-Extension.html#t:Language">Language</a> -&gt; [<a href="Distribution-Simple-Compiler.html#t:Flag">Flag</a>]</p></div><div class="top"><p class="src"><a name="v:unsupportedLanguages" class="def">unsupportedLanguages</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; [<a href="Language-Haskell-Extension.html#t:Language">Language</a>] -&gt; [<a href="Language-Haskell-Extension.html#t:Language">Language</a>]</p></div><div class="top"><p class="src"><a name="v:extensionsToFlags" class="def">extensionsToFlags</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; [<a href="Language-Haskell-Extension.html#t:Extension">Extension</a>] -&gt; [<a href="Distribution-Simple-Compiler.html#t:Flag">Flag</a>]</p><div class="doc"><p>For the given compiler, return the flags for the supported extensions.
</p></div></div><div class="top"><p class="src"><a name="v:unsupportedExtensions" class="def">unsupportedExtensions</a> :: <a href="Distribution-Simple-Compiler.html#t:Compiler">Compiler</a> -&gt; [<a href="Language-Haskell-Extension.html#t:Extension">Extension</a>] -&gt; [<a href="Language-Haskell-Extension.html#t:Extension">Extension</a>]</p><div class="doc"><p>For the given compiler, return the extensions it does not support.
</p></div></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>