Practical Concurrent Haskell: With Big Data Applications

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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

Author(s): Stefania Loredana Nita; Marius Mihailescu
Publisher: Apress
Year: 2017

Language: English
Pages: 266
Tags: functional programming, data science, data analysis, analysis, science, data

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