Book Image

Haskell Data Analysis Cookbook

By : Nishant Shukla
Book Image

Haskell Data Analysis Cookbook

By: Nishant Shukla

Overview of this book

Table of Contents (19 chapters)
Haskell Data Analysis Cookbook
About the Author
About the Reviewers

Parallelizing pure functions using the Par monad

The Par monad from the Control.Monad.Par package is used to speed up pure functions using parallel threads. Information flow is guided by variables called IVar. We can put values to IVar in parallel or get values from it.

Getting ready

Install the Par monad on cabal as follows:

$ cabal install monad-par

How to do it…

  1. Import the Par monad as follows:

    import Control.Monad.Par
  2. Run a computation in parallel, and perform some interesting function such as counting the number of digits and printing it out.

    main = print $ length $ show $ runPar mypar
  3. Define an I/O type action as follows:

    mypar = do 
      v1 <- new :: Par (IVar Integer)
      v2 <- new :: Par (IVar Integer)
      fork $ put v1 task1
      fork $ put v2 task2
      v1' <- get v1
      v2' <- get v2
      return (v1' + v2')  
  4. Perform a time-consuming task as follows:

    task1 = 8^8^8
  5. Perform another time-consuming task as follows:

    task2 = 8^8^7
  6. Compile the code with the threaded and rtsopts flags enabled, using the...