Book Image

Haskell Data Analysis cookbook

By : Nishant Shukla
Book Image

Haskell Data Analysis cookbook

By: Nishant Shukla

Overview of this book

Step-by-step recipes filled with practical code samples and engaging examples demonstrate Haskell in practice, and then the concepts behind the code. This book shows functional developers and analysts how to leverage their existing knowledge of Haskell specifically for high-quality data analysis. A good understanding of data sets and functional programming is assumed.
Table of Contents (14 chapters)
13
Index

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...