X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fpackages.xml;h=ab4ab8df8e6c327693cfdac1bdb130bdc871de4c;hb=f94f26a7cb7bb7005b88f50c4383a761fc18718d;hp=4d0cac7035d8b655d3bd95d661bca6450bd4591d;hpb=c5a9ed64dab05594bcf871716225ffcbaff6ca7f;p=ghc-hetmet.git
diff --git a/docs/users_guide/packages.xml b/docs/users_guide/packages.xml
index 4d0cac7..ab4ab8d 100644
--- a/docs/users_guide/packages.xml
+++ b/docs/users_guide/packages.xml
@@ -30,8 +30,9 @@ Packages
packagesusing
- To see which packages are installed, use the
- ghc-pkg command:
+ GHC only knows about packages that are
+ installed. To see which packages are installed, use
+ the ghc-pkg command:
$ ghc-pkg list
@@ -44,19 +45,16 @@ $ ghc-pkg list
(hssource-1.0), rts-1.0
- Packages are either exposed or hidden. Only
- modules from exposed packages may be imported by your Haskell code; if
+ An installed package is either exposed or hidden
+ by default. Packages hidden by default are listed in
+ parentheses (eg. (lang-1.0)) in the output above. Command-line flags, described below, allow you to expose a hidden package
+ or hide an exposed one.
+ Only modules from exposed packages may be imported by your Haskell code; if
you try to import a module from a hidden package, GHC will emit an error
message.
- Each package has an exposed flag, which says whether it is exposed by
- default or not. Packages hidden by default are listed in
- parentheses (eg. (lang-1.0)) in the output from
- ghc-pkg list. To expose a package which is hidden by
- default, use the
- flag (see below).
-
- To see which modules are exposed by a package:
+ To see which modules are provided by a package use the
+ ghc-pkg command (see ):
$ ghc-pkg field network exposed-modules
@@ -67,12 +65,6 @@ exposed-modules: Network.BSD,
Network
- In general, packages containing hierarchical modules are usually
- exposed by default. However, it is possible for two packages to contain
- the same module: in this case, only one of the packages should be
- exposed. It is an error to import a module that belongs to more than one
- exposed package.
-
The GHC command line options that control packages are:
@@ -82,7 +74,7 @@ exposed-modules: Network.BSD,
- This option causes package P to be
+ This option causes the installed package P to be
exposed. The package P can be specified
in full with its version number
(e.g. network-1.0) or the version number can be
@@ -180,9 +172,42 @@ exposed-modules: Network.BSD,
useful.
+
+
+ foo
+
+
+
+ Tells GHC the the module being compiled forms part of
+ package foo.
+ If this flag is omitted (a very common case) then the
+ default package main is assumed.
+ Note: the argument to
+ should be the full package identifier for the package,
+ that is it should include the version number. For example:
+ -package mypkg-1.2.
+
+
+
+ The main package
+
+ Every complete Haskell program must define main in
+ module Main
+ in package main. (Omitting the flag compiles
+ code for package main.) Failure to do so leads to a somewhat obscure
+ link-time error of the form:
+
+/usr/bin/ld: Undefined symbols:
+_ZCMain_main_closure
+___stginit_ZCMain
+
+
+
+
+
Consequences of packages
@@ -243,7 +268,7 @@ exposed-modules: Network.BSD,
database will override those of the same name in the global
database.
- You can control the loading of package databses using the following
+ You can control the loading of package databases using the following
GHC options:
@@ -379,28 +404,8 @@ $ export GHC_PACKAGE_PATH=$HOME/.my-ghc-packages.conf:
To compile a module which is to be part of a new package,
- use the -package-name option:
-
-
-
-
- -package-name
- option
-
- This option is added to the command line when
- compiling a module that is destined to be part of package
- foo. If this flag is omitted then the
- default package main is assumed.
-
- Note: the argument to
- should be the full package identifier for the package,
- that is it should include the version number. For example:
- -package mypkg-1.2.
-
-
-
-
- Failure to use the -package-name option
+ use the -package-name option ().
+ Failure to use the -package-name option
when compiling a package will probably result in disaster, but
you will only discover later when you attempt to import modules
from the package. At this point GHC will complain that the