X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=docs%2Fusers_guide%2Fusing.xml;h=06b9ccc315a6ad52eb4f500c3f18fcd2b9439e07;hb=58521c72cec262496dabf5fffb057d25ab17a0f7;hp=20bb687b4f8b10dd0ff8048e783ad29ddde84f6b;hpb=43e0bca04009902c16f8f764dcb9a78c8da277c9;p=ghc-hetmet.git diff --git a/docs/users_guide/using.xml b/docs/users_guide/using.xml index 20bb687..06b9ccc 100644 --- a/docs/users_guide/using.xml +++ b/docs/users_guide/using.xml @@ -120,7 +120,7 @@ module X where Most non-mode flags fall into this category. A dynamic flag may be used on the command line, in a - GHC_OPTIONS pragma in a source file, or set + OPTIONS_GHC pragma in a source file, or set using :set in GHCi. @@ -844,7 +844,9 @@ ghc -c Foo.hs , , , - , and + , + , + , and . The following flags are simple ways to select standard “packages” of warnings: @@ -858,6 +860,7 @@ ghc -c Foo.hs -W option Provides the standard warnings plus , + , , , , and @@ -876,7 +879,8 @@ ghc -c Foo.hs , , , - , and + , + , and . @@ -988,11 +992,25 @@ foreign import "&f" f :: FunPtr t + : + + + + Causes a warning to be emitted when a datatype + T is exported + with all constructors, i.e. T(..), but is it + just a type synonym. + Also causes a warning to be emitted when a module is + re-exported, but that module exports nothing. + + + + : - Causes a warning to be emitted when a a datatype + Causes a warning to be emitted when a datatype T is imported with all constructors, i.e. T(..), but has been exported abstractly, i.e. T. @@ -1000,6 +1018,20 @@ foreign import "&f" f :: FunPtr t + : + + + + Causes a warning to be emitted when an unlifted type + is bound in a way that looks lazy, e.g. + where (I# x) = .... Use + where !(I# x) = ... instead. This will be an + error, rather than a warning, in GHC 6.14. + + + + + : @@ -1175,6 +1207,11 @@ f foo = foo { x = 6 } typographical errors that turn into hard-to-find bugs, e.g., in the inadvertent capture of what would be a recursive call in f = ... let f = id in ... f .... + The warning is suppressed for names beginning with an underscore. For example + + f x = do { _ignore <- this; _ignore <- that; return (the other) } + + @@ -1345,6 +1382,56 @@ f "2" = 2 + + : + + + unused do binding, warning + do binding, unused + + Report expressions occuring in do and mdo blocks + that appear to silently throw information away. + For instance do { mapM popInt xs ; return 10 } would report + the first statement in the do block as suspicious, + as it has the type StackM [Int] and not StackM (), but that + [Int] value is not bound to anything. The warning is suppressed by + explicitly mentioning in the source code that your program is throwing something away: + + do { _ <- mapM popInt xs ; return 10 } + + Of course, in this particular situation you can do even better: + + do { mapM_ popInt xs ; return 10 } + + + + + + + : + + + apparently erroneous do binding, warning + do binding, apparently erroneous + + Report expressions occuring in do and mdo blocks + that appear to lack a binding. + For instance do { return (popInt 10) ; return 10 } would report + the first statement in the do block as suspicious, + as it has the type StackM (StackM Int) (which consists of two nested applications + of the same monad constructor), but which is not then "unpacked" by binding the result. + The warning is suppressed by explicitly mentioning in the source code that your program is throwing something away: + + do { _ <- return (popInt 10) ; return 10 } + + For almost all sensible programs this will indicate a bug, and you probably intended to write: + + do { popInt 10 ; return 10 } + + + + + If you're feeling really paranoid, the @@ -1723,7 +1810,9 @@ f "2" = 2 &phases; - + + &shared_libs; + Using Concurrent Haskell Concurrent Haskellusing @@ -1834,7 +1923,7 @@ f "2" = 2 - + RTS option Use x simultaneous threads when @@ -1846,9 +1935,19 @@ f "2" = 2 on a dual-core machine we would probably use +RTS -N2 -RTS. + Omitting x, + i.e. +RTS -N -RTS, lets the runtime + choose the value of x itself + based on how many processors are in your machine. + + Be careful when using all the processors in your + machine: if some of your processors are in use by other + programs, this can actually harm performance rather than + improve it. + Setting also has the effect of - setting (the number of OS threads to - use for garbage collection) to the same value. + enabling the parallel garbage collector (see + ). There is no means (currently) by which this value may vary after the program has started.