X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fseparate_compilation.xml;h=58726e56d23f6f176947362fea9cbef948743034;hb=d4050431de1adddedb240e497f77f89301f77070;hp=c33ff2175b6935222206bdb4b5e0b3f6f3aefc1c;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/docs/users_guide/separate_compilation.xml b/docs/users_guide/separate_compilation.xml index c33ff21..58726e5 100644 --- a/docs/users_guide/separate_compilation.xml +++ b/docs/users_guide/separate_compilation.xml @@ -114,7 +114,9 @@ has been specified, then the object filename is dir/mod.osuf, where mod is the module name with - dots replaced by slashes. + dots replaced by slashes. GHC will silently create the necessary directory + structure underneath dir, if it does not + already exist. @@ -182,7 +184,7 @@ dots replaced by the directory separator ('/' or '\', depending on the system), and extension is a source extension (hs, lhs) - if we are in mode and GHCi, or + if we are in mode or GHCi, or hisuf otherwise. For example, suppose the search path contains directories @@ -218,7 +220,7 @@ This isn't the whole story: GHC also looks for modules in pre-compiled libraries, known as packages. See the section on - packages (), for details. + packages () for details. @@ -434,7 +436,9 @@ $ ghc -c parse/Foo.hs parse/Bar.hs gurgle/Bumble.hs -odir `arch` + , + @@ -449,7 +453,9 @@ $ ghc -c parse/Foo.hs parse/Bar.hs gurgle/Bumble.hs -odir `arch` + , + @@ -459,7 +465,9 @@ $ ghc -c parse/Foo.hs parse/Bar.hs gurgle/Bumble.hs -odir `arch` + , + @@ -603,9 +611,9 @@ $ ghc -c parse/Foo.hs parse/Bar.hs gurgle/Bumble.hs -odir `arch` - - - + + + Turn off recompilation checking (which is on by @@ -704,7 +712,7 @@ module A where To compile these three files, issue the following commands: - ghc -c A.hs-boot -- Poduces A.hi-boot, A.o-boot + ghc -c A.hs-boot -- Produces A.hi-boot, A.o-boot ghc -c B.hs -- Consumes A.hi-boot, produces B.hi, B.o ghc -c A.hs -- Consumes B.hi, produces A.hi, A.o ghc -o foo A.o B.o -- Linking the program @@ -770,7 +778,7 @@ When a hs-boot file A.hs-boot A module M that is {-# SOURCE #-}-imported in a program will usually also be ordinarily imported elsewhere. If not, ghc --make - automatically adds M to the set of moudles it tries to + automatically adds M to the set of modules it tries to compile and link, to ensure that M's implementation is included in the final program. @@ -810,18 +818,20 @@ can be given abstractly, by omitting the '=' sign and everything that follows. it out precisely as in its real definition. If you do not write out the constructors, you may need to give a kind - annotation (), to tell + annotation (), to tell GHC the kind of the type variable, if it is not "*". (In source files, this is worked out from the way the type variable is used in the constructors.) For example: data R (x :: * -> *) y +You cannot use deriving on a data type declaration; write an +instance declaration instead. Class declarations is exactly as in Haskell, except that you may not put -default method declarations. You can also omit all the class methods entirely. +default method declarations. You can also omit all the superclasses and class +methods entirely; but you must either omit them all or put them all in. - Do not include instance declarations. There is a complication to do with -how the dictionary functions are named. It may well work, but it's not a well-tested feature. + You can include instance declarations just as in Haskell; but omit the "where" part. @@ -911,11 +921,11 @@ Foo.o Foo.hc Foo.s : Baz.hi # Foo imports Baz make looks for a rule to do so; one of the preceding suffix rules does the job nicely. These dependencies can be generated automatically by ghc; see - + - + Dependency generation dependencies in Makefiles Makefile dependencies @@ -1012,6 +1022,15 @@ ghc -M -optdep-f -optdep.depend ... + + + Display a list of the cycles in the module graph. This is + useful when trying to eliminate such cycles. You do not need the -optdep prefix + for this flag. + + + + Turn off warnings about interface file shadowing. @@ -1096,6 +1115,7 @@ ghc -M -optdep-f -optdep.depend ... + @@ -1163,7 +1184,7 @@ and GHC has no other reason for visiting the module. Example: class C a where ... Here, neither D nor T is declared in module Orphan. -We call such modules ``orphan modules'', +We call such modules “orphan modules”, defined thus: An orphan module @@ -1174,7 +1195,7 @@ defined thus: An instance declaration in a module M is an orphan instance if orphan instance none of the type constructors - or classes mentioned in the instance head (the part after the ``=>'') are declared + or classes mentioned in the instance head (the part after the “=>”) are declared in M. Only the instance head counts. In the example above, it is not good enough for C's declaration @@ -1198,8 +1219,8 @@ your best to have as few orphan modules as possible. You can identify an orphan module by looking in its interface file, M.hi, using the -. If there is a ``!'' on the first line, -GHC considers it an orphan module. +. If there is a “!” on the +first line, GHC considers it an orphan module.