Learn to use the APIs and frameworks for parallel and concurrent applications in Haskell. This book will show you how to exploit multicore processors with the help of parallelism in order to increase the performance of your applications. __Practical Concurrent Haskell__ teaches you how concurrency enables you to write programs using threads for multiple interactions. After accomplishing this, you will be ready to make your move into application development and portability with applications in cloud computing and big data. You'll use MapReduce and other, similar big data tools as part of your Haskell big data applications development. **What You'll Learn** * Program with Haskell * Harness concurrency to Haskell * Apply Haskell to big data and cloud computing applications * Use Haskell concurrency design patterns in big data * Accomplish iterative data processing on big data using Haskell * Use MapReduce and work with Haskell on large clusters **Who This Book Is For**Those with at least some prior experience with Haskell and some prior experience with big data in another programming language such as Java, C#, Python, or C++. Brief Contents Contents --- Haskell Foundations Introduction What Is Haskell? A Little Bit of Haskell History The Cloud and Haskell Book Structure Summary Programming with Haskell Functional vs. Object-Oriented Programming Language Basics Types Input/Output (IO) Mechanisms Modules Advanced Types Monads Other Advanced Techniques Summary Parallelism & Concurrency Annotating the Code for Parallelism Parallelism for Dataflow Concurrent Servers for a Network Threads for Parallel Programming Threads and MVars Distributed Programming Eval Monad for Parallelism Summary Strategies in Evaluation Process Redexes and Lazy Evaluation Parallel Strategies in Haskell Summary Exceptions Errors Exceptions Summary Cancellation Asynchronous Exceptions Using Asynchronous Exceptions with mask Extending the bracket Function Writing Safe Channels Using Asynchronous Exceptions timeout Variants Catching Asynchronous Exceptions mask and forkIO Operations Summary Transactional Memory Case Studies Transactions Software Transactional Memory in Haskell Summary Debugging Techniques in Big Data Data Science Big Data Haskell vs. Data Science Debugging Tehniques Summary --- Big Data & Cloud Computing Haskell in the Cloud Processes and Messages Matching Without Blocking Messages Within Channels Summary Haskell in Big Data More About Big Data MapReduce in Haskell Summary Concurrency Design Patterns Active Object Balking Pattern Barrier Disruptor Double-Checked Locking Guarded Suspension Monitor Object Reactor Pattern Scheduler Pattern Thread Pool Pattern Summary Large-Scale Design The Type System Purity Monads for Structuring Type Classes and Existential Types Concurrency and Parallelism Use of FFI The Profiler Refactor Summary Shared Memory Approach for Hadoop Streaming Performance Hadoop Hadoop Streaming An Improved Streaming Model Hadoop Streaming in Haskell Summary Interactive Debugger for Development & Portability Applications based on Big Data Approaches to Run-Time Type Reconstruction Run-Time Type Inference RTTI and New Types Termination and Efficiency Practical Concerns Implementation in Haskell Summary Iterative Data Processing on Big Data Programming Model Loop-Aware Task Scheduling Inter-Iteration Locality Experimental Tests and Implementation Summary MapReduce Incremental and Iterative Techniques Iterative Computation in MapReduce Incremental Iterative Processing on MRBGraph Summary Big Data & Large Clusters Programming Model Master Data Structures Fault Tolerance Locality Task Granularity Backup Tasks Partitioning Function Implementation of Data Processing Techniques Summary Biblio Index Learn to use the APIs and frameworks for parallel and concurrent applications in Haskell. This book will show you how to exploit multicore processors with the help of parallelism in order to increase the performance of your applications. Practical Concurrent Haskell teaches you how concurrency enables you to write programs using threads for multiple interactions. After accomplishing this, you will be ready to make your move into application development and portability with applications in cloud computing and big data. You'll use MapReduce and other, similar big data tools as part of your Haskell big data applications development. What You'll Learn Program with Haskell Harness concurrency to Haskell Apply Haskell to big data and cloud computing applications Use Haskell concurrency design patterns in big data Accomplish iterative data processing on big data using Haskell Use MapReduce and work with Haskell on large clusters Who This Book Is For Those with at least some prior experience with Haskell and some prior experience with big data in another programming language such as Java, C#, Python, or C .