X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fusing.xml;h=5d92ab2a24b5617371f356a515c1eb5b38bd5a1f;hb=5263c9ab4408e3b62dbf7505ab40a81946d4e49b;hp=f81b1c8122cd55b8a78ac1e41ab510e42b111606;hpb=eb51c44142ecd9dea175d9632f16cc75a44476f5;p=ghc-hetmet.git diff --git a/docs/users_guide/using.xml b/docs/users_guide/using.xml index f81b1c8..5d92ab2 100644 --- a/docs/users_guide/using.xml +++ b/docs/users_guide/using.xml @@ -14,7 +14,7 @@ Options can be specified in three ways: - command-line arguments + Command-line arguments structure, command-line command-linearguments @@ -26,9 +26,9 @@ ghc [argument...] - command-line arguments are either options or file names. + Command-line arguments are either options or file names. - command-line options begin with -. + Command-line options begin with -. They may not be grouped: is different from . Options need not precede filenames: e.g., ghc *.o -o @@ -40,7 +40,7 @@ ghc [argument...] - command line options in source files + Command line options in source files source-file options @@ -73,15 +73,14 @@ module X where maintains internally, so you'll be desperately disappointed if you try to glob etc. inside OPTIONS_GHC. - NOTE: the contents of OPTIONS_GHC are prepended to the - command-line options, so you do have the - ability to override OPTIONS_GHC settings via the command - line. + NOTE: the contents of OPTIONS_GHC are appended to the + command-line options, so options given in the source file + override those given on the command-line. It is not recommended to move all the contents of your Makefiles into your source files, but in some circumstances, the OPTIONS_GHC pragma is the Right Thing. (If you - use and have OPTION flags in + use and have OPTION flags in your module, the OPTIONS_GHC will get put into the generated .hc file). @@ -104,8 +103,8 @@ module X where modeoptions - Each of GHC's command line options is classified as either - static or dynamic or + Each of GHC's command line options is classified as + static, dynamic or mode: @@ -113,7 +112,7 @@ module X where Mode flags For example, or . - There may be only a single mode flag on the command line. The + There may only be a single mode flag on the command line. The available modes are listed in . @@ -343,6 +342,30 @@ module X where + ghc --supported-languages + + + + + Print the supported language extensions. + + + + + + + ghc --info + + + + + Print information about the compiler. + + + + + + ghc --version ghc -V @@ -379,9 +402,23 @@ module X where interfaces, and include files (usually something like /usr/local/lib/ghc-5.04 on Unix). This is the value of - $libdirlibdir - in the package configuration file (see ). + $libdirlibdir + in the package configuration file + (see ). + + + + + + + ghc --print-docdir + + + + + Print the path to GHC's documentation directory. Note that + some distributions do no include the documentation, in which case + this directory may be empty or may not exist. @@ -394,7 +431,7 @@ module X where When given the option, GHC will build a multi-module Haskell program by following - dependencies from a single root module (usually + dependencies from one or more root modules (usually just Main). For example, if your Main module is in a file called Main.hs, you could compile and link the @@ -408,7 +445,7 @@ ghc ––make Main.hs names or module names; GHC will figure out all the modules in the program by following the imports from these initial modules. It will then attempt to compile each module which is out of - date, and finally if there is a Main module, + date, and finally, if there is a Main module, the program will also be linked into an executable. The main advantages to using ghc @@ -503,7 +540,7 @@ olleh The first phase to run is determined by each input-file suffix, and the last phase is determined by a flag. If no - relevant flag is present, then go all the way through linking. + relevant flag is present, then go all the way through to linking. This table summarises: @@ -595,15 +632,13 @@ ghc -c Foo.hs Note: The option -E option runs just the pre-processing passes - of the compiler, dumping the result in a file. Note that this - differs from the previous behaviour of dumping the file to - standard output. + of the compiler, dumping the result in a file. Overriding the default behaviour for a file As described above, the way in which a file is processed by GHC - depends on its suffix. This behaviour can be overriden using the + depends on its suffix. This behaviour can be overridden using the option: @@ -821,6 +856,7 @@ ghc -c Foo.hs -W option Provides the standard warnings plus , + , , , and . @@ -828,28 +864,27 @@ ghc -c Foo.hs - : - - - Turns off all warnings, including the standard ones. - - - - : Turns on all warning options that indicate potentially suspicious code. The warnings that are not enabled by - are: - - - - - - - + are + , + , + , + , and + . + + + + + : + + + Turns off all warnings, including the standard ones and + those that -Wall doesn't enable. @@ -862,6 +897,16 @@ ghc -c Foo.hs + + : + + + Warnings are treated only as warnings, not as errors. This is + the default, but can be useful to negate a + flag. + + + The full set of warning options is described below. To turn @@ -880,6 +925,20 @@ ghc -c Foo.hs function or type is used. Entities can be marked as deprecated using a pragma, see . + + This option is on by default. + + + + + : + + + + Causes a warning to be emitted when a a datatype + T is imported + with all constructors, i.e. T(..), but has been + exported abstractly, i.e. T. @@ -956,7 +1015,7 @@ ghc -c Foo.hs g [] = 2 - This option isn't enabled be default because it can be + This option isn't enabled by default because it can be a bit noisy, and it doesn't always indicate a bug in the program. However, it's generally considered good practice to cover all the cases in your functions. @@ -984,7 +1043,7 @@ f :: Foo -> Foo f foo = foo { x = 6 } - This option isn't enabled be default because it can be + This option isn't enabled by default because it can be very noisy, and it often doesn't indicate a bug in the program. @@ -1057,12 +1116,8 @@ f foo = foo { x = 6 } inner-scope value has the same name as an outer-scope value, i.e. the inner value shadows the outer one. This can catch typographical errors that turn into hard-to-find bugs, e.g., - in the inadvertent cyclic definition let x = ... x - ... in. - - Consequently, this option - will complain about cyclic recursive - definitions. + in the inadvertent capture of what would be a recursive call in + f = ... let f = id in ... f .... @@ -1075,7 +1130,7 @@ f foo = foo { x = 6 } This option causes a warning to be emitted whenever the module contains an "orphan" instance declaration or rewrite rule. - An instance declartion is an orphan if it appears in a module in + An instance declaration is an orphan if it appears in a module in which neither the class nor the type being instanced are declared in the same module. A rule is an orphan if it is a rule for a function declared in another module. A module containing any @@ -1096,7 +1151,7 @@ f foo = foo { x = 6 } By default, the compiler will warn you if a set of - patterns are overlapping, i.e., + patterns are overlapping, e.g., f :: String -> Int @@ -1121,7 +1176,7 @@ f "2" = 2 patterns that can fail, eg. \(x:xs)->.... Normally, these aren't treated as incomplete patterns by . - ``Lambda-bound patterns'' includes all places where there is a single pattern, + “Lambda-bound patterns” includes all places where there is a single pattern, including list comprehensions and do-notation. In these cases, a pattern-match failure is quite legitimate, and triggers filtering (list comprehensions) or the monad fail operation (monads). For example: @@ -1131,10 +1186,6 @@ f "2" = 2 Switching on will elicit warnings about these probably-innocent cases, which is why the flag is off by default. - The deriving( Read ) mechanism produces monadic code with - pattern matches, so you will also get misleading warnings about the compiler-generated - code. (This is arguably a Bad Thing, but it's awkward to fix.) - @@ -1159,7 +1210,7 @@ f "2" = 2 the Haskell defaulting mechanism for numeric types kicks in. This is useful information when converting code from a context that assumed one default into one with another, - e.g., the `default default' for Haskell 1.4 caused the + e.g., the ‘default default’ for Haskell 1.4 caused the otherwise unconstrained value 1 to be given the type Int, whereas Haskell 98 defaults it to Integer. This may lead to @@ -1276,7 +1327,7 @@ f "2" = 2 Note that higher optimisation levels cause more cross-module optimisation to be performed, which can have an impact on how much of your program needs to be recompiled when - you change something. This is one reaosn to stick to + you change something. This is one reason to stick to no-optimisation when developing code. @@ -1671,7 +1722,7 @@ f "2" = 2 is also possible to obtain performance improvements with parallelism on programs that do not use concurrency. This section describes how to use GHC to compile and run parallel programs, in we desribe the language features that affect + linkend="lang-parallel" /> we describe the language features that affect parallelism.