packages feed

parconc-examples 0.4.7 → 0.4.8

raw patch · 4 files changed

+171/−616 lines, 4 filesdep ~basedep ~bytestringdep ~distributed-process

Dependency ranges changed: base, bytestring, distributed-process, random, stm, template-haskell, time

Files

ChangeLog.md view
@@ -1,3 +1,10 @@+# Verison 0.4.8++* Builds with GHC 8.6.x and 8.8.x+* Requires cabal-install 2.2 or later+* Bugfix to the chat example, prevent two users simultaneously kicking+  each other+ # Version 0.4.7  * Builds with GHC 8.2.x and 8.4.x
chat.hs view
@@ -218,13 +218,14 @@         hPutStrLn clientHandle $ "You have been kicked: " ++ reason       Nothing -> do         msg <- readTChan clientSendChan+        io <- handleMessage serv client msg         return $ do-            continue <- handleMessage serv client msg+            continue <- io             when continue $ server -- >>  -- <<handleMessage-handleMessage :: Server -> Client -> Message -> IO Bool+handleMessage :: Server -> Client -> Message -> STM (IO Bool) handleMessage server client@Client{..} message =   case message of      Notice msg         -> output $ "*** " ++ msg@@ -233,19 +234,20 @@      Command msg ->        case words msg of            ["/kick", who] -> do-               atomically $ kick server who clientName-               return True+               kick server who clientName+               return $ return True            "/tell" : who : what -> do-               tell server client who (unwords what)-               return True+               return $ do+                 tell server client who (unwords what)+                 return True            ["/quit"] ->-               return False-           ('/':_):_ -> do+               return $ return False+           ('/':_):_ -> return $ do                hPutStrLn clientHandle $ "Unrecognised command: " ++ msg                return True            _ -> do-               atomically $ broadcast server $ Broadcast clientName msg-               return True+               broadcast server $ Broadcast clientName msg+               return $ return True  where-   output s = do hPutStrLn clientHandle s; return True+   output s = return $ do hPutStrLn clientHandle s; return True -- >>
distrib-ping/ping-fail.hs view
@@ -42,7 +42,7 @@   say $ printf "sending ping to %s" (show pid)  -- <<withMonitor-  withMonitor pid $ do+  withMonitor pid $ \_ -> do     send pid (Pong mypid)               -- <1>     receiveWait       [ match $ \(Pong _) -> do
parconc-examples.cabal view
@@ -1,15 +1,15 @@+cabal-version:       2.2 name:                parconc-examples-version:             0.4.7+version:             0.4.8 synopsis:            Examples to accompany the book "Parallel and Concurrent Programming in Haskell" description:         Examples to accompany the book "Parallel and Concurrent Programming in Haskell"-license:             BSD3+license:             BSD-3-Clause license-file:        LICENSE author:              Simon Marlow maintainer:          Simon Marlow <marlowsd@gmail.com> copyright:           (c) Simon Marlow 2011-2013 category:            Sample Code build-type:          Simple-cabal-version:       >=1.10 bug-reports:         https://github.com/simonmar/parconc-examples/issues homepage:            http://github.com/simonmar/parconc-examples @@ -79,225 +79,190 @@ flag network26   default : True +common deps+  default-language: Haskell2010+  build-depends:+     array >= 0.4 && <0.6,+     async >= 2.0 && < 2.3,+     base >= 4.5 && < 4.14,+     binary >=0.6.3 && < 0.11,+     bytestring >= 0.9 && < 0.12,+     containers >= 0.4 && < 0.6,+     deepseq >= 1.3 && < 1.5,+     directory >= 1.1 && < 1.4,+     filepath >= 1.3 && < 1.5,+     monad-par >= 0.3.4 && < 0.4,+       -- monad-par 0.3 has a bug:+       -- https://github.com/simonmar/monad-par/issues/23+     parallel ==3.2.*,+     random >= 1.0 && < 1.3,+     stm >=2.4 && < 2.6,+     time >= 1.4 && < 1.12,+     template-haskell >= 2.7 && < 2.16,+     transformers >=0.3 && <0.6,+     utf8-string >= 0.3 && < 1.1,+     vector >= 0.10 && < 0.13,+     xml ==1.3.*,++common network+  if flag(network26)+      build-depends: network >= 2.6 && < 2.9+                   , network-uri >= 2.6 && < 2.7+  else+      build-depends: network >= 2.3 && < 2.6++common http+  build-depends:+    http-conduit >= 2.1 && < 2.4++common monad-par+  build-depends:+    abstract-par ==0.3.*,+    monad-par >= 0.3.4 && < 0.4++common distributed+  if flag(distributed)+     build-depends:+                   distributed-process >= 0.5 && < 0.8+                 , distributed-process-simplelocalnet ==0.2.*+                 , distributed-static >= 0.2 && < 0.4+  else+     buildable: False+  if impl(ghc <= 7.6)+      -- prior to ghc-7.4 generics lived in ghc-prim+      build-depends: ghc-prim+ -- ----------------------------------------------------------------------------- -- par-eval  executable rpar+  import: deps   main-is: rpar.hs-  build-depends:   base >= 4.5 && < 4.12-                 , time >= 1.4 && < 1.10-                 , parallel ==3.2.*   ghc-options: -threaded-  default-language: Haskell2010  executable sudoku1+  import: deps   main-is: sudoku1.hs   other-modules: Sudoku-  build-depends:   base >= 4.5 && < 4.12-                 , parallel ==3.2.*-                 , array >= 0.4 && <0.6-  default-language: Haskell2010  executable sudoku2+  import: deps   main-is: sudoku2.hs   other-modules: Sudoku-  build-depends:   base >= 4.5 && < 4.12-                 , parallel ==3.2.*-                 , array >= 0.4 && <0.6-                 , deepseq >= 1.3 && < 1.5   ghc-options: -threaded-  default-language: Haskell2010  executable sudoku3+  import: deps   main-is: sudoku3.hs   other-modules: Sudoku-  build-depends:   base >= 4.5 && < 4.12-                 , parallel ==3.2.*-                 , array >= 0.4 && <0.6   ghc-options: -threaded-  default-language: Haskell2010  executable sudoku4+  import: deps   main-is: sudoku4.hs   other-modules: Sudoku-  build-depends:   base >= 4.5 && < 4.12-                 , parallel ==3.2.*-                 , array >= 0.4 && <0.6   ghc-options: -threaded-  default-language: Haskell2010  executable sudoku5+  import: deps   main-is: sudoku5.hs   other-modules: Sudoku-  build-depends:   base >= 4.5 && < 4.12-                 , parallel ==3.2.*-                 , array >= 0.4 && <0.6   ghc-options: -threaded-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- par-strat  executable strat+  import: deps   main-is: strat.hs-  build-depends:   base >= 4.5 && < 4.12-                 , parallel ==3.2.*   ghc-options: -threaded-  default-language: Haskell2010  executable strat2+  import: deps   main-is: strat2.hs-  build-depends:   base >= 4.5 && < 4.12-                 , parallel ==3.2.*   ghc-options: -threaded-  default-language: Haskell2010  executable strat3+  import: deps   main-is: strat3.hs-  build-depends:   base >= 4.5 && < 4.12-                 , parallel ==3.2.*   ghc-options: -threaded-  default-language: Haskell2010  executable rsa+  import: deps   main-is: rsa.hs   other-modules: ByteStringCompat-  build-depends:   base >= 4.5 && < 4.12-                 , bytestring >= 0.9 && < 0.11-                 , deepseq >= 1.3 && < 1.5-  default-language: Haskell2010  executable rsa1+  import: deps   main-is: rsa1.hs   other-modules: ByteStringCompat-  build-depends:   base >= 4.5 && < 4.12-                 , bytestring >= 0.9 && < 0.11-                 , parallel ==3.2.*-                 , deepseq >= 1.3 && < 1.5   ghc-options: -threaded-  default-language: Haskell2010  executable rsa2+  import: deps   main-is: rsa2.hs   other-modules: ByteStringCompat-  build-depends:   base >= 4.5 && < 4.12-                 , bytestring >= 0.9 && < 0.11-                 , parallel ==3.2.*-                 , deepseq >= 1.3 && < 1.5   ghc-options: -threaded-  default-language: Haskell2010  executable kmeans+  import: deps   hs-source-dirs: kmeans   main-is: kmeans.hs   other-modules: KMeansCore-  build-depends:   base >= 4.5 && < 4.12-                 , parallel ==3.2.*-                 , time >= 1.4 && < 1.10-                 , deepseq >= 1.3 && < 1.5-                 , monad-par >= 0.3.4 && < 0.4-                   -- monad-par 0.3 has a bug:-                   -- https://github.com/simonmar/monad-par/issues/23-                 , binary >=0.6.3 && < 0.11-                 , array >= 0.4 && <0.6-                 , bytestring >= 0.9 && < 0.11-                 , vector >= 0.10 && < 0.13   ghc-options: -threaded-  default-language: Haskell2010  executable GenSamples+  import: deps   hs-source-dirs: kmeans   main-is: GenSamples.hs   other-modules: KMeansCore-  build-depends:   base >= 4.5 && < 4.12-                 , binary >=0.6.3 && < 0.11-                 , array >= 0.4 && <0.6-                 , vector >= 0.10 && < 0.13-                 , random >= 1.0 && < 1.2-                 , normaldistribution >= 1.1 && < 1.2-                 , deepseq >= 1.3 && < 1.5-                 , bytestring >= 0.9 && < 0.11-  default-language: Haskell2010+  build-depends: normaldistribution >= 1.1 && < 1.2  -- ----------------------------------------------------------------------------- -- par-monad  executable parmonad+  import: deps   main-is: parmonad.hs-  build-depends:   base >= 4.5 && < 4.12-                 , monad-par >= 0.3.4 && < 0.4   ghc-options: -threaded-  default-language: Haskell2010  executable rsa-pipeline+  import: deps   main-is: rsa-pipeline.hs   other-modules: ByteStringCompat Stream-  build-depends:   base >= 4.5 && < 4.12-                 , bytestring >= 0.9 && < 0.11-                 , monad-par >= 0.3.4 && < 0.4-                 , deepseq >= 1.3 && < 1.5   ghc-options: -threaded-  default-language: Haskell2010  executable fwsparse+  import: deps   main-is: fwsparse.hs   other-modules: SparseGraph MapCompat   hs-source-dirs: fwsparse-  build-depends:   base >= 4.5 && < 4.12-                 , random >= 1.0 && < 1.2-                 , array >= 0.4 && <0.6-                 , containers >= 0.4 && < 0.6-  default-language: Haskell2010  executable fwsparse1+  import: deps   main-is: fwsparse1.hs   other-modules: SparseGraph MapCompat   hs-source-dirs: fwsparse-  build-depends:   base >= 4.5 && < 4.12-                 , random >= 1.0 && < 1.2-                 , array >= 0.4 && <0.6-                 , containers >= 0.4 && < 0.6-                 , monad-par >= 0.3.4 && < 0.4-                 , deepseq >= 1.3 && < 1.5   ghc-options: -threaded-  default-language: Haskell2010  executable  timetable+  import: deps   main-is: timetable.hs-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , deepseq >= 1.3 && < 1.5-                 , random >= 1.0 && < 1.2-  default-language: Haskell2010  executable  timetable1+  import: deps   main-is: timetable1.hs-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , deepseq >= 1.3 && < 1.5-                 , monad-par >= 0.3.4 && < 0.4-                 , random >= 1.0 && < 1.2-  default-language: Haskell2010  executable  timetable2+  import: deps   main-is: timetable2.hs-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , deepseq >= 1.3 && < 1.5-                 , monad-par >= 0.3.4 && < 0.4-                 , random >= 1.0 && < 1.2-  default-language: Haskell2010  executable  timetable3+  import: deps   main-is: timetable3.hs-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , deepseq >= 1.3 && < 1.5-                 , monad-par >= 0.3.4 && < 0.4-                 , random >= 1.0 && < 1.2-  default-language: Haskell2010  executable  parinfer+  import: deps   main-is: parinfer.hs   hs-source-dirs: parinfer   other-modules:  InferMonad@@ -313,41 +278,34 @@                   Infer                   Substitution                   StateX-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , deepseq >= 1.3 && < 1.5-                 , monad-par >= 0.3.4 && < 0.4-                 , array >= 0.4 && <0.6-  build-tools:     alex-                 , happy-  default-language: Haskell2010+  build-tool-depends: alex:alex, happy:happy  -- ----------------------------------------------------------------------------- -- par-repa  executable  fwdense+  import: deps   main-is: fwdense.hs-  build-depends:   base >= 4.5 && < 4.12-                 , repa >= 3.2 && < 3.5+  build-depends:+    repa >= 3.2 && < 3.5   ghc-options: -O2   if flag(llvm)      ghc-options: -fllvm-  default-language: Haskell2010  executable  fwdense1+  import: deps   main-is: fwdense1.hs-  build-depends:   base >= 4.5 && < 4.12-                 , repa >= 3.2 && < 3.5-                 , transformers >=0.3 && <0.6+  build-depends:+    repa >= 3.2 && < 3.5   ghc-options: -O2 -threaded   if flag(llvm)      ghc-options: -fllvm-  default-language: Haskell2010  executable rotateimage+  import: deps   main-is: rotateimage.hs-  build-depends:   base >= 4.5 && < 4.12-                 , repa >= 3.2 && < 3.5+  build-depends:+    repa >= 3.2 && < 3.5   ghc-options: -O2 -threaded   if flag(devil)      build-depends: repa-devil == 0.3.*@@ -355,25 +313,23 @@      buildable: False   if flag(llvm)      ghc-options: -fllvm-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- par-accel  executable  fwaccel+  import: deps   main-is: fwaccel.hs   other-modules: AccelerateCompat-  build-depends:   base >= 4.5 && < 4.12   ghc-options: -O2   if flag(accelerate)      build-depends: accelerate >= 0.12 && < 1.3   else      buildable: False-  default-language: Haskell2010  executable  fwaccel-gpu+  import: deps   main-is: fwaccel-gpu.hs-  build-depends:   base >= 4.5 && < 4.12   if flag(accelerate)      build-depends: accelerate >= 0.12 && < 1.3   else@@ -383,14 +339,13 @@   else      buildable: False   ghc-options: -O2-  default-language: Haskell2010  executable  mandel+  import: deps   main-is: mandel.hs   other-modules: Config   hs-source-dirs: mandel-  build-depends:   base >= 4.5 && < 4.12-                 , fclabels+  build-depends:   fclabels   if flag(accelerate)      build-depends: accelerate >= 0.12 && < 1.3                   , accelerate-io@@ -401,214 +356,118 @@   else      buildable: False   ghc-options: -O2-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- conc-fork  executable  fork+  import: deps   main-is: fork.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  reminders+  import: deps   main-is: reminders.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  reminders2+  import: deps   main-is: reminders2.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- conc-mvar  executable  mvar1+  import: deps   main-is: mvar1.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  mvar2+  import: deps   main-is: mvar2.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  mvar3+  import: deps   main-is: mvar3.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  logger+  import: deps   main-is: logger.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  phonebook+  import: deps   main-is: phonebook.hs-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-  default-language: Haskell2010  executable  chan+  import: deps   main-is: chan.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  chan2+  import: deps   main-is: chan2.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- conc-overlap  executable geturls1+  import: deps, network, http   main-is: geturls1.hs   other-modules: GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , http-conduit >= 2.1 && < 2.4-                 , bytestring >= 0.9 && < 0.11-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  geturls2+  import: deps, network, http   main-is: geturls2.hs   other-modules: GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  geturls3+  import: deps, network, http   main-is: geturls3.hs   other-modules: TimeIt GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  geturls4+  import: deps, network, http   main-is: geturls4.hs   other-modules: GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  geturls5+  import: deps, network, http   main-is: geturls5.hs   other-modules: GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  geturls6+  import: deps, network, http   main-is: geturls6.hs   other-modules: TimeIt GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- conc-asyncex  executable  geturlscancel+  import: deps, network, http   main-is: geturlscancel.hs   other-modules: TimeIt GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  geturlscancel2+  import: deps, network, http   main-is: geturlscancel2.hs   other-modules: TimeIt GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  modifytwo+  import: deps   main-is: modifytwo.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  chan3+  import: deps   main-is: chan3.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  timeout+  import: deps   main-is: timeout.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  catch-mask+  import: deps   main-is: catch-mask.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  catch-mask2+  import: deps   main-is: catch-mask2.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- conc-stm@@ -619,501 +478,188 @@ -- subdirectory (mismodules) so that the repo remains safe to use on -- case-insensitive filesystems (#15). executable  miscmodules+  import: deps   main-is: miscmodules.hs   hs-source-dirs: miscmodules .   other-modules: TMVar, TList, TQueue, TBQueue, WindowManager-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , stm ==2.4.*-  default-language: Haskell2010  executable  geturlsfirst+  import: deps, network, http   main-is: geturlsfirst.hs   other-modules: ConcurrentUtils, GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  TChan+  import: deps   main-is: TChan.hs-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- conc-higher  executable  geturls7+  import: deps, network, http   main-is: geturls7.hs   other-modules: ConcurrentUtils, GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  geturls8+  import: deps, network, http   main-is: geturls8.hs   other-modules: Async, GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  geturls9+  import: deps, network, http   main-is: geturls9.hs   other-modules: Async, GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  timeout2+  import: deps   main-is: timeout.hs-  build-depends:   base >= 4.5 && < 4.12-                 , async >= 2.0 && < 2.3-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- conc-par  executable findseq+  import: deps   main-is: findseq.hs-  build-depends:   base >= 4.5 && < 4.12-                 , filepath >= 1.3 && < 1.5-                 , directory >= 1.1 && < 1.4-  default-language: Haskell2010  executable findpar+  import: deps   main-is: findpar.hs   ghc-options: -threaded-  build-depends:   base >= 4.5 && < 4.12-                 , filepath >= 1.3 && < 1.5-                 , directory >= 1.1 && < 1.4-                 , async >= 2.0 && < 2.3-  default-language: Haskell2010  executable findpar2+  import: deps   main-is: findpar2.hs   ghc-options: -threaded-  build-depends:   base >= 4.5 && < 4.12-                 , filepath >= 1.3 && < 1.5-                 , directory >= 1.1 && < 1.4-                 , async >= 2.0 && < 2.3-  default-language: Haskell2010  executable findpar3+  import: deps   main-is: findpar3.hs   other-modules: CasIORef   ghc-options: -threaded-  build-depends:   base >= 4.5 && < 4.12-                 , filepath >= 1.3 && < 1.5-                 , directory >= 1.1 && < 1.4-                 , async >= 2.0 && < 2.3-                 , stm ==2.4.*-  default-language: Haskell2010  executable findpar4+  import: deps, monad-par   main-is: findpar4.hs   ghc-options: -threaded-  build-depends:   base >= 4.5 && < 4.12-                 , filepath >= 1.3 && < 1.5-                 , directory >= 1.1 && < 1.4-                 , async >= 2.0 && < 2.3-                 , stm ==2.4.*-                 , transformers >=0.3 && <0.6-                 , abstract-par ==0.3.*-                 , monad-par >= 0.3.4 && < 0.4-  default-language: Haskell2010  executable findpar5+  import: deps, monad-par   main-is: findpar5.hs   ghc-options: -threaded-  build-depends:   base >= 4.5 && < 4.12-                 , filepath >= 1.3 && < 1.5-                 , directory >= 1.1 && < 1.4-                 , transformers >=0.3 && <0.6-                 , abstract-par ==0.3.*-                 , monad-par >= 0.3.4 && < 0.4-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- conc-server  executable  server+  import: deps, network   main-is: server.hs   other-modules: ConcurrentUtils-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  server2+  import: deps, network   main-is: server2.hs   other-modules: ConcurrentUtils-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , async >= 2.0 && < 2.3-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable chat+  import: deps, network   main-is: chat.hs   other-modules: ConcurrentUtils-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , async >= 2.0 && < 2.3-                 , stm ==2.4.*-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- conc-distrib  executable ping+  import: deps, network, distributed   main-is: distrib-ping/ping.hs   other-modules: DistribUtils-  build-depends:   base >= 4.5 && < 4.12-                 , binary >=0.6.3 && < 0.11-                 , template-haskell >= 2.7 && < 2.15-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  if impl(ghc <= 7.6)-      -- prior to ghc-7.4 generics lived in ghc-prim-      build-depends: ghc-prim-  if flag(distributed)-     build-depends:-                   distributed-process >= 0.5 && < 0.7-                 , distributed-process-simplelocalnet ==0.2.*-                 , distributed-static >= 0.2 && < 0.4-  else-     buildable: False-  default-language: Haskell2010  executable ping-multi+  import: deps, network, distributed   main-is: distrib-ping/ping-multi.hs   other-modules: DistribUtils-  build-depends:   base >= 4.5 && < 4.12-                 , binary >=0.6.3 && < 0.11-                 , template-haskell >= 2.7 && < 2.15-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  if impl(ghc <= 7.6)-      -- prior to ghc-7.4 generics lived in ghc-prim-      build-depends: ghc-prim-  if flag(distributed)-     build-depends:-                   distributed-process >= 0.5 && < 0.7-                 , distributed-process-simplelocalnet ==0.2.*-                 , distributed-static >= 0.2 && < 0.4-  else-     buildable: False-  default-language: Haskell2010  executable ping-tc+  import: deps, network, distributed   main-is: distrib-ping/ping-tc.hs   other-modules: DistribUtils-  build-depends:   base >= 4.5 && < 4.12-                 , binary >=0.6.3 && < 0.11-                 , template-haskell >= 2.7 && < 2.15-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  if impl(ghc <= 7.6)-      -- prior to ghc-7.4 generics lived in ghc-prim-      build-depends: ghc-prim-  if flag(distributed)-     build-depends:-                   distributed-process >= 0.5 && < 0.7-                 , distributed-process-simplelocalnet ==0.2.*-                 , distributed-static >= 0.2 && < 0.4-  else-     buildable: False-  default-language: Haskell2010  executable ping-tc-merge+  import: deps, network, distributed   main-is: distrib-ping/ping-tc-merge.hs   other-modules: DistribUtils-  build-depends:   base >= 4.5 && < 4.12-                 , binary >=0.6.3 && < 0.11-                 , template-haskell >= 2.7 && < 2.15-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  if impl(ghc <= 7.6)-      -- prior to ghc-7.4 generics lived in ghc-prim-      build-depends: ghc-prim-  if flag(distributed)-     build-depends:-                   distributed-process >= 0.5 && < 0.7-                 , distributed-process-simplelocalnet ==0.2.*-                 , distributed-static >= 0.2 && < 0.4-  else-     buildable: False-  default-language: Haskell2010  -- extra, not in the text? executable ping-tc-notify+  import: deps, network, distributed   main-is: distrib-ping/ping-tc-notify.hs   other-modules: DistribUtils-  build-depends:   base >= 4.5 && < 4.12-                 , binary >=0.6.3 && < 0.11-                 , template-haskell >= 2.7 && < 2.15-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  if impl(ghc <= 7.6)-      -- prior to ghc-7.4 generics lived in ghc-prim-      build-depends: ghc-prim-  if flag(distributed)-     build-depends:-                   distributed-process >= 0.5 && < 0.7-                 , distributed-process-simplelocalnet ==0.2.*-                 , distributed-static >= 0.2 && < 0.4-  else-     buildable: False-  default-language: Haskell2010  executable ping-fail+  import: deps, network, distributed   main-is: distrib-ping/ping-fail.hs   other-modules: DistribUtils-  build-depends:   base >= 4.5 && < 4.12-                 , binary >=0.6.3 && < 0.11-                 , template-haskell >= 2.7 && < 2.15-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  if impl(ghc <= 7.6)-      -- prior to ghc-7.4 generics lived in ghc-prim-      build-depends: ghc-prim-  if flag(distributed)-     build-depends:-                   distributed-process >= 0.5 && < 0.7-                 , distributed-process-simplelocalnet ==0.2.*-                 , distributed-static >= 0.2 && < 0.4-  else-     buildable: False-  default-language: Haskell2010  executable distrib-chat+  import: deps, network, distributed   main-is: distrib-chat/chat.hs   other-modules: ConcurrentUtils DistribUtils-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , stm ==2.4.*-                 , async >= 2.0 && < 2.3-                 , binary >=0.6.3 && < 0.11-                 , transformers >=0.3 && <0.6-                 , template-haskell >= 2.7 && < 2.15-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  if impl(ghc <= 7.6)-      -- prior to ghc-7.4 generics lived in ghc-prim-      build-depends: ghc-prim-  if flag(distributed)-     build-depends:-                   distributed-process >= 0.5 && < 0.7-                 , distributed-process-simplelocalnet ==0.2.*-                 , distributed-static >= 0.2 && < 0.4-  else-     buildable: False-  default-language: Haskell2010  executable distrib-chat-noslave+  import: deps, network, distributed   main-is: distrib-chat/chat-noslave.hs   other-modules: ConcurrentUtils-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , stm ==2.4.*-                 , async >= 2.0 && < 2.3-                 , binary >=0.6.3 && < 0.11-                 , transformers >=0.3 && <0.6-                 , template-haskell >= 2.7 && < 2.15-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  if impl(ghc <= 7.6)-      -- prior to ghc-7.4 generics lived in ghc-prim-      build-depends: ghc-prim-  if flag(distributed)-     build-depends:-                   distributed-process >= 0.5 && < 0.7-                 , distributed-process-simplelocalnet ==0.2.*-                 , distributed-static >= 0.2 && < 0.4-  else-     buildable: False-  default-language: Haskell2010  executable distrib-db+  import: deps, network, distributed   main-is: db.hs   hs-source-dirs: . distrib-db   other-modules: DistribUtils Database-  build-depends:   base >= 4.5 && < 4.12-                 , containers >= 0.4 && < 0.6-                 , stm ==2.4.*-                 , async >= 2.0 && < 2.3-                 , binary >=0.6.3 && < 0.11-                 , template-haskell >= 2.7 && < 2.15-                 , transformers >=0.3 && <0.6-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  if impl(ghc <= 7.6)-      -- prior to ghc-7.4 generics lived in ghc-prim-      build-depends: ghc-prim-  if flag(distributed)-     build-depends:-                   distributed-process >= 0.5 && < 0.7-                 , distributed-process-simplelocalnet ==0.2.*-                 , distributed-static >= 0.2 && < 0.4-  else-     buildable: False-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- conc-debugging-tuning  executable  mvar4+  import: deps   main-is: mvar4.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  deadlock1+  import: deps   main-is: deadlock1.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  deadlock2+  import: deps   main-is: deadlock2.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  threadperf1+  import: deps   main-is: threadperf1.hs-  build-depends:   base >= 4.5 && < 4.12-  default-language: Haskell2010  executable  threadperf2+  import: deps   main-is: threadperf2.hs-  build-depends:   base >= 4.5 && < 4.12   ghc-options: -rtsopts-  default-language: Haskell2010  -- ----------------------------------------------------------------------------- -- Extras (exercises etc.)  executable  bingtranslator+  import: deps, network, http   main-is: bingtranslator.hs   other-modules: BingTranslate GetURL   hs-source-dirs: other .-  build-depends:   base >= 4.5 && < 4.12-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-                 , utf8-string >= 0.3 && < 1.1-                 , xml ==1.3.*-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  bingtranslatorconc+  import: deps, network, http   main-is: bingtranslatorconc.hs   other-modules: BingTranslate GetURL   hs-source-dirs: other .-  build-depends:   base >= 4.5 && < 4.12-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-                 , utf8-string >= 0.3 && < 1.1-                 , xml ==1.3.*-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  executable  geturlsstm+  import: deps, network, http   main-is: geturlsstm.hs   other-modules: TimeIt GetURL-  build-depends:   base >= 4.5 && < 4.12-                 , stm ==2.4.*-                 , bytestring >= 0.9 && < 0.11-                 , time >= 1.4 && < 1.10-                 , http-conduit >= 2.1 && < 2.4-  if flag(network26)-      build-depends: network >= 2.6 && < 2.9-                   , network-uri >= 2.6 && < 2.7-  else-      build-depends: network >= 2.3 && < 2.6-  default-language: Haskell2010  -- ToDo: --   euler35 --   index --   sudoku-par{1,2,3,4,5}-