Mastering Haskell Programming

Course

Online

£ 150 VAT inc.

Description

  • Type

    Course

  • Methodology

    Online

  • Start date

    Different dates available

Harness the power of functional programming with advanced Haskell conceptsHaskell is a lazy, purely-functional programming language with a very precise type system. Each of these features make Haskell quite different from mainstream object-oriented programming languages, which is where Haskell's appeal and its difficulty lie.In this course, you’ll discover different ways to structure interactions between the program and the outside world. We’ll look at some subtler aspects of the IO monad, such as lazy IO and unsafePerformIO. In addition to the IO monad, we’ll also check out two other structured forms of interaction: streaming libraries and functional reactive programming.Then we explore parallel, concurrent, and distributed programming. Thanks to purity, Haskell is especially well-suited for the first two, and so there are a number of approaches to cover. As for distributed programming, we focus on the idea of splitting a large monolithic program into smaller microservices, asking whether doing so is a good idea. We’ll also consider a different way of interacting with other microservices, and explore an alternative to microservices.By the end of this course, you’ll have an in-depth knowledge of various aspects of Haskell, allowing you to make the most of functional programming in Haskell.About the AuthorSamuel Gélineau is a Haskell developer with more than 10 years of experience in Haskell Programming. He has been blogging about Haskell for about the same time. He has given many talks at Montreal’s Haskell Meetup, and is now co-organizer. Samuel is a big fan of functional programming, and spends an enormous amount of time answering Haskell questions on the Haskell subreddit, and as a result has a good idea of the kind of questions people have about Haskell, and has learned how to answer those questions clearly, even when the details are complicated. Apart from Haskell, he is a fan of Elm, Agda, and Idris, and also Rust.

Facilities

Location

Start date

Online

Start date

Different dates availableEnrolment now open

About this course

Find out how to structure larger Haskell programs
Use the Parsec library to easily parse structured inputs
Get acquainted with the process of writing an interpreter, a type checker, and a compiler
See how to model your problem domain with precise types and how to reap the benefits of doing so
Work with Deterministic Communication using IVars and Deterministic Collaboration using LVars
Understand how to do concurrent and distributed programming in Haskell
Know how to cope with the uncertainties of communication in a distributed application

Questions & Answers

Add your question

Our advisors and other users will be able to reply to you

Who would you like to address this question to?

Fill in your details to get a reply

We will only publish your name and question

Reviews

This centre's achievements

2021

All courses are up to date

The average rating is higher than 3.7

More than 50 reviews in the last 12 months

This centre has featured on Emagister for 4 years

Subjects

  • Testing
  • Installation
  • Semantics
  • Programming
  • Install
  • Programme Planning
  • Programming Application
  • Information Systems
  • Information Visualisation
  • IT

Course programme

Tracking Side-Effects Using IO 7 lectures 01:04:01 The Course Overview This video gives an overview of the entire course. Installation and Setup In this video, we will install everything you will need in order to follow along with the code I'll be presenting during the course.
  • Install Stack, which in turn installs the Glasgow Haskell Compiler and all the libraries you will need in order to execute the code from my slides
  • Fetch the slides using git and navigate them using git commands
  • (optional) Install git-slides to navigate the slides more easily
IO as a "Sin Bin" In this video, we will look at the wide variety of side-effects supported by the IO monad.
  • Call C functions from IO, this is where most of the side-effects come from
  • Mutate single-cells and arrays from IO
  • Create pointers with various semantics supported by the language runtime
Exception Handling In this video, you will learn the subtleties of exception handling in Haskell, including why throwing exceptions is one of the only side-effect which isn't tracked by Haskell's type system.
  • A brief overview of the IO half of the exception handling API
  • Learn how to guard resources in the presence of exceptions
  • The other half: throwing exceptions from pure code
Fewer Sins Using the Free Monad In this video, we will try to understand why so many different kinds of side-effects live in the IO monad, as opposed to a more fine-grained system with multiple monads each responsible for tracking one effect. Then, we will create our own fine-grained effect-tracking monads.
  • A simple module-based implementation of an effect-tracking monad
  • A list-based implementation which simplifies testing
  • Use a free monad to allow our implementation to support more complex computations
Benign Side-Effects Using unsafePerformIO In this video, you will learn how and when to use unsafePerformIO to execute side-effects within pure code.
  • UseunsafePerformIO to inspect when and whether pure code is executed
  • UseunsafePerformIO to define global variables
  • Learn how unsafePerformIO can accidentally create bugs which are difficult to understand
Simple Streaming Using Lazy IO In this video, we will examine how lazy IO is implemented, and how the same underlying mechanism can be used to express effectful stream transformations.
  • Introducing unsafeInterleaveIO by contrasting it with unsafePerformIO
  • Introducing lazy IO by contrasting it with ordinary, strict IO
  • Introducing effectful stream transformations by contrasting them with pure stream transformations
Tracking Side-Effects Using IO. 7 lectures 01:04:01 The Course Overview This video gives an overview of the entire course. Installation and Setup In this video, we will install everything you will need in order to follow along with the code I'll be presenting during the course.
  • Install Stack, which in turn installs the Glasgow Haskell Compiler and all the libraries you will need in order to execute the code from my slides
  • Fetch the slides using git and navigate them using git commands
  • (optional) Install git-slides to navigate the slides more easily
IO as a "Sin Bin" In this video, we will look at the wide variety of side-effects supported by the IO monad.
  • Call C functions from IO, this is where most of the side-effects come from
  • Mutate single-cells and arrays from IO
  • Create pointers with various semantics supported by the language runtime
Exception Handling In this video, you will learn the subtleties of exception handling in Haskell, including why throwing exceptions is one of the only side-effect which isn't tracked by Haskell's type system.
  • A brief overview of the IO half of the exception handling API
  • Learn how to guard resources in the presence of exceptions
  • The other half: throwing exceptions from pure code
Fewer Sins Using the Free Monad In this video, we will try to understand why so many different kinds of side-effects live in the IO monad, as opposed to a more fine-grained system with multiple monads each responsible for tracking one effect. Then, we will create our own fine-grained effect-tracking monads.
  • A simple module-based implementation of an effect-tracking monad
  • A list-based implementation which simplifies testing
  • Use a free monad to allow our implementation to support more complex computations
Benign Side-Effects Using unsafePerformIO In this video, you will learn how and when to use unsafePerformIO to execute side-effects within pure code.
  • UseunsafePerformIO to inspect when and whether pure code is executed
  • UseunsafePerformIO to define global variables
  • Learn how unsafePerformIO can accidentally create bugs which are difficult to understand
Simple Streaming Using Lazy IO In this video, we will examine how lazy IO is implemented, and how the same underlying mechanism can be used to express effectful stream transformations.
  • Introducing unsafeInterleaveIO by contrasting it with unsafePerformIO
  • Introducing lazy IO by contrasting it with ordinary, strict IO
  • Introducing effectful stream transformations by contrasting them with pure stream transformations
The Course Overview This video gives an overview of the entire course. The Course Overview This video gives an overview of the entire course. The Course Overview This video gives an overview of the entire course. The Course Overview This video gives an overview of the entire course. This video gives an overview of the entire course. This video gives an overview of the entire course. Installation and Setup In this video, we will install everything you will need in order to follow along with the code I'll be presenting during the course.
  • Install Stack, which in turn installs the Glasgow Haskell Compiler and all the libraries you will need in order to execute the code from my slides
  • Fetch the slides using git and navigate them using git commands
  • (optional) Install git-slides to navigate the slides more easily
Installation and Setup In this video, we will install everything you will need in order to follow along with the code I'll be presenting during the course.
  • Install Stack, which in turn installs the Glasgow Haskell Compiler and all the libraries you will need in order to execute the code from my slides
  • Fetch the slides using git and navigate them using git commands
  • (optional) Install git-slides to navigate the slides more easily
Installation and Setup In this video, we will install everything you will need in order to follow along with the code I'll be presenting during the course.
  • Install Stack, which in turn installs the Glasgow Haskell Compiler and all the libraries you will need in order to execute the code from my slides
  • Fetch the slides using git and navigate them using git commands
  • (optional) Install git-slides to navigate the slides more easily
Installation and Setup In this video, we will install everything you will need in order to follow along with the code I'll be presenting during the course.
  • Install Stack, which in turn installs the Glasgow Haskell Compiler and all the libraries you will need in order to execute the code from my slides
  • Fetch the slides using git and navigate them using git commands
  • (optional) Install git-slides to navigate the slides more easily
In this video, we will install everything you will need in order to follow along with the code I'll be presenting during the course.
  • Install Stack, which in turn installs the Glasgow Haskell Compiler and all the libraries you will need in order to execute the code from my slides
  • Fetch the slides using git and navigate them using git commands
  • (optional) Install git-slides to navigate the slides more easily
In this video, we will install everything you will need in order to follow along with the code I'll be presenting during the course.
  • Install Stack, which in turn installs the Glasgow Haskell Compiler and all the libraries you will need in order to execute the code from my slides
  • Fetch the slides using git and navigate them using git commands
  • (optional) Install git-slides to navigate the slides more easily
IO as a "Sin Bin" In this video, we will look at the wide variety of side-effects supported by the IO monad.
  • Call C functions from IO, this is where most of the side-effects come from
  • Mutate single-cells and arrays from IO
  • Create pointers with various semantics supported by the language runtime
IO as a "Sin Bin" In this video, we will look at the wide variety of side-effects supported by the IO monad.
  • Call C functions from IO, this is where most of the side-effects come from
  • Mutate single-cells and arrays from IO
  • Create pointers with various semantics supported by the language runtime
IO as a "Sin Bin" In this video, we will look at the wide variety of side-effects supported by the IO monad.
  • Call C functions from IO, this is where most of the side-effects come from
  • Mutate single-cells and arrays from IO
  • Create pointers with various semantics supported by the language runtime
IO as a "Sin Bin" In this video, we will look at the wide variety of side-effects supported by the IO monad.
  • Call C functions from IO, this is where most of the side-effects come from
  • Mutate single-cells and arrays from IO
  • Create pointers with various semantics supported by the language runtime
In this video, we will look at the wide variety of side-effects supported by the IO monad.
  • Call C functions from IO, this is where most of the side-effects come from
  • Mutate single-cells and arrays from IO
  • Create pointers with various semantics supported by the language runtime
In this video, we will look at the wide variety of side-effects supported by the IO monad.
  • Call C functions from IO, this is where most of the side-effects come from
  • Mutate single-cells and arrays from IO
  • Create pointers with various semantics supported by the language runtime
Exception Handling In this video, you will learn the subtleties of exception handling in Haskell, including why throwing exceptions is one of the only side-effect which isn't tracked by Haskell's type system.
  • A brief overview of the IO half of the exception handling API
  • Learn how to guard resources in the presence of exceptions
  • The other half: throwing exceptions from pure code
Exception Handling In this video, you will learn the subtleties of exception handling in Haskell, including why throwing exceptions is one of the only side-effect which isn't tracked by Haskell's type system.
  • A brief overview of the IO half of the exception handling API
  • Learn how to guard resources in the presence of exceptions
  • The other half: throwing exceptions from pure code
Exception Handling In this video, you will learn the subtleties of exception handling in Haskell, including why throwing exceptions is one of the only side-effect which isn't tracked by Haskell's type system.
  • A brief overview of the IO half of the exception handling API
  • Learn how to guard resources in the presence of exceptions
  • The other half: throwing exceptions from pure code
Exception Handling In this video, you will learn the subtleties of exception handling in Haskell, including why throwing exceptions is one of the only side-effect which isn't tracked by Haskell's type system.
  • A brief overview of the IO half of the exception handling API
  • Learn how to guard resources in the presence of exceptions
  • The other half: throwing exceptions from pure code
In this video, you will learn the subtleties of exception handling in Haskell, including why throwing exceptions is one of the only side-effect which isn't tracked by Haskell's type system.
  • A brief overview of the IO half of the exception handling API
  • Learn how to guard resources in the presence of exceptions
  • The other half: throwing exceptions from pure code
In this video, you will learn the subtleties of exception handling in Haskell, including why throwing exceptions is one of the only side-effect which isn't tracked by Haskell's type system.
  • A brief overview of the IO half of the exception handling API
  • Learn how to guard resources in the presence of exceptions
  • The other half: throwing exceptions from pure code
Fewer Sins Using the Free Monad In this video, we will try to understand why so many different kinds of side-effects live in the IO monad, as opposed to a more fine-grained system with multiple monads each responsible for tracking one effect. Then, we will create our own fine-grained effect-tracking monads.
  • A simple module-based implementation of an effect-tracking monad
  • A list-based implementation which simplifies testing
  • Use a free monad to allow our implementation to support more complex computations
Fewer Sins Using the Free Monad In this video, we will try to understand why so many different kinds of side-effects live in the IO monad, as opposed to a more fine-grained system with multiple monads each responsible for tracking one effect. Then, we will create our own fine-grained effect-tracking monads.
  • A simple module-based implementation of an effect-tracking monad
  • A list-based implementation which simplifies testing
  • Use a free monad to allow our implementation to support more complex computations
Fewer Sins Using the Free Monad In this video, we will try to understand why so many different kinds of side-effects live in the IO monad, as opposed to a more fine-grained system with multiple monads each responsible for tracking one effect. Then, we will create our own fine-grained effect-tracking monads.
  • A simple module-based implementation of an effect-tracking monad
  • A list-based implementation which simplifies testing
  • Use a free monad to allow our implementation to support more complex computations
Fewer Sins Using the Free Monad In this video, we will try to understand why so many different kinds of side-effects live in the IO monad, as opposed to a more fine-grained system with multiple monads each responsible for tracking one effect. Then, we will create our own fine-grained effect-tracking monads.
  • A simple module-based implementation of an effect-tracking monad
  • A list-based implementation which simplifies testing
  • Use a free monad to allow our implementation to support more complex computations
In this video, we will try to understand why so many different kinds of side-effects live in the IO monad, as opposed to a more fine-grained system with multiple monads each responsible for tracking one effect. Then, we will create our own fine-grained effect-tracking monads ing mechanism can be used to express effectful stream transformations.
  • Introducing unsafeInterleaveIO by contrasting it with unsafePerformIO
  • Introducing lazy IO by contrasting it with ordinary, strict IO
  • Introducing effectful stream transformations by contrasting them with pure stream transformations
Simple Streaming Using Lazy IO...

Additional information

This course is for developers who are familiar with the Haskell programming language and functional programming in general, and who want to get more in-depth knowledge of the language as well as getting to know a number of techniques that will help them become experts in Haskell programming

Mastering Haskell Programming

£ 150 VAT inc.