nmergeIO, -- :: [[a]] -> IO [a]
-- $merge
- -- * GHC\'s implementation of concurrency
+ -- * GHC's implementation of concurrency
- -- |This section describes features specific to GHC\'s
+ -- |This section describes features specific to GHC's
-- implementation of Concurrent Haskell.
-- ** Terminating the program
Concurrency is \"lightweight\", which means that both thread creation
and context switching overheads are extremely low. Scheduling of
Haskell threads is done internally in the Haskell runtime system, and
-doesn\'t make use of any operating system-supplied thread packages.
+doesn't make use of any operating system-supplied thread packages.
Haskell threads can communicate via 'MVar's, a kind of synchronised
mutable variable (see "Control.Concurrent.MVar"). Several common
as:
-> main = forkIO (write \'a\') >> write \'b\'
+> main = forkIO (write 'a') >> write 'b'
> where write c = putChar c >> write c
will print either @aaaaaaaaaaaaaa...@ or @bbbbbbbbbbbb...@,
Calling a foreign C procedure (such as @getchar@) that blocks waiting
for input will block /all/ threads, unless the @threadsafe@ attribute
is used on the foreign call (and your compiler \/ operating system
-supports it). GHC\'s I\/O system uses non-blocking I\/O internally to
+supports it). GHC's I\/O system uses non-blocking I\/O internally to
implement thread-friendly I\/O, so calling standard Haskell I\/O
functions blocks only the thead making the call.
-}
to the locking on a 'Handle'. Only one thread
may hold the lock on a 'Handle' at any one
time, so if a reschedule happens while a thread is holding the
- lock, the other thread won\'t be able to run. The upshot is that
+ lock, the other thread won't be able to run. The upshot is that
the switch from @aaaa@ to
@bbbbb@ happens infrequently. It can be
improved by lowering the reschedule tick period. We also have a
patch that causes a reschedule whenever a thread waiting on a
- lock is woken up, but haven\'t found it to be useful for anything
+ lock is woken up, but haven't found it to be useful for anything
other than this example :-)
-}
-- Stability : provisional
-- Portability : portable
--
--- John Hughes\'s and Simon Peyton Jones\'s Pretty Printer Combinators
+-- John Hughes's and Simon Peyton Jones's Pretty Printer Combinators
--
-- Based on /The Design of a Pretty-printing Library/
-- in Advanced Functional Programming,
isEmpty :: Doc -> Bool; -- ^ Returns 'True' if the document is empty
empty :: Doc; -- ^ An empty document
-semi :: Doc; -- ^ A \';\' character
-comma :: Doc; -- ^ A \',\' character
-colon :: Doc; -- ^ A \':\' character
+semi :: Doc; -- ^ A ';' character
+comma :: Doc; -- ^ A ',' character
+colon :: Doc; -- ^ A ':' character
space :: Doc; -- ^ A space character
-equals :: Doc; -- ^ A \'=\' character
-lparen :: Doc; -- ^ A \'(\' character
-rparen :: Doc; -- ^ A \')\' character
-lbrack :: Doc; -- ^ A \'[\' character
-rbrack :: Doc; -- ^ A \']\' character
-lbrace :: Doc; -- ^ A \'{\' character
-rbrace :: Doc; -- ^ A \'}\' character
+equals :: Doc; -- ^ A '=' character
+lparen :: Doc; -- ^ A '(' character
+rparen :: Doc; -- ^ A ')' character
+lbrack :: Doc; -- ^ A '[' character
+rbrack :: Doc; -- ^ A ']' character
+lbrace :: Doc; -- ^ A '{' character
+rbrace :: Doc; -- ^ A '}' character
text :: String -> Doc
ptext :: String -> Doc
parens :: Doc -> Doc; -- ^ Wrap document in @(...)@
brackets :: Doc -> Doc; -- ^ Wrap document in @[...]@
braces :: Doc -> Doc; -- ^ Wrap document in @{...}@
-quotes :: Doc -> Doc; -- ^ Wrap document in @\'...\'@
+quotes :: Doc -> Doc; -- ^ Wrap document in @'...'@
doubleQuotes :: Doc -> Doc; -- ^ Wrap document in @\"...\"@
-- Combining @Doc@ values