Learning Haskell Programming
4.0 (190 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
1,442 students enrolled

Learning Haskell Programming

Build scalable and robust applications with Haskell
4.0 (190 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
1,442 students enrolled
Created by Packt Publishing
Last updated 1/2017
English [Auto]
Current price: $86.99 Original price: $124.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 4 hours on-demand video
  • 1 downloadable resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Basics of Haskell datatypes and functions
  • Using higher order functions for powerful data manipulation and code reuse
  • Developing and build a Haskell app using a modern toolchain
  • Writing and conducting tests
  • Writing and deploy a simple web-application
  • Saving and retrieving data from a database
Course content
Expand all 21 lectures 04:09:57
+ Installation and Setup
5 lectures 20:05

This video provides overview of the entire course.

Preview 02:58

The aim of this video is to introduce how to install Haskell on your computer.

Installing Haskell

The aim of this video is to introduce how to install Haskell on OS X.

Installation Instructions for OS X

The aim of this video is to introduce how to install Haskell on Windows.

Installation Instructions for Windows

The aim of this video is to introduce how to install Haskell on Linux.

Installation Instructions for Linux
+ Getting Started with Haskell
6 lectures 58:57

We want to get started with Haskell in a quick and engaging way, without having to start with a long lecture on syntax. So, to develop our familiarity with Haskell, we'll explore some of the basics, such as how to use and manipulate numbers and strings using 'ghci,' the interactive interpreter.

Preview 13:03

It's hard to write interesting programs with just simple types such as strings and numbers. In this video, we'll look at built-in data structures such as Lists and Tuples, and see how we might do a simple dictionary lookup using built-in functions and the Maybe type.

Built-in Data Structures

The interactive interpreter is a great tool, but we're not going to be able to write longer programs without breaking our text editor. In this video, we'll look at how to use ghci along with our source code files.

Editing Haskell Source Code

You can't do "Functional Programming" without functions. In this video, you'll learn about how to declare functions in Haskell and some of the important characteristics of Haskell functions—how they work with types, currying, and point-free style.

Introduction to Functions

If you're worried that being a "strongly typed" language meant that Haskell's types would be restrictive, never fear! In this video, we'll see how to define not just synonyms, but new types, including recursive ones!

Building Your Own Data Structures

Now we've created our new data-type, how do we manipulate the data inside it? In this video, you'll learn how to calculate the Expression values that we created in the previous video, and look at how to do pattern matching on lists.

Pattern Matching
+ Developing a Word Game
5 lectures 01:01:30

To make sure we're taking advantage of a solid structure to develop a more complicated application on, we'll create a project with 'stack.' We'll see how to structure our main module, library functions, and tests and look at how to develop, compile, and test the project.

Preview 11:51

In this video, we'll take the first steps towards declaring and displaying a simple grid of letters.

Setting up the Word Game Grid

So we want to search the grid from left to right, right to left, top to bottom, and diagonally... phew! Let's keep things simple for now by searching just from left to right. We'll explore list manipulation functions and the similarities between the Bool and Maybe types.

Searching for Words

Though we can now search the grid horizontally, we want to do it in all directions. The easiest way to do this isn't to make our function more complicated, but rather to learn how to transform our grid! We'll use a toolkit including 'map', 'reverse', 'transpose', and our own recursive functions to do this.

Searching in All Directions

Although Haskell's type system by itself gives you a lot of reassurance that you're writing correct code, good unit tests can help you maintain and understand your code even better.

Unit Testing the Grid with Hspec
+ Polishing the Word Game
5 lectures 01:49:25

You will learn how to associate every character on the word grid with a set of coordinates such as (2, 3) pointing at its position by row and column. We can accomplish this by learning more about Haskell's list type, including how to work with infinite lists, repeat values, iterate them with the List monad and list comprehensions, and join lists together with zip.

Preview 20:44

Using the grid coordinates from the previous video, we will explore how to declare a Cell datatype and incorporate that into our code. This will also give us a good experience of refactoring code. We'll do this using Haskell's type system.

Fleshing Out the Grid Model

In the previous video, we saw that the search functions couldn't be refactored in a simplistic, mechanical way. We now have to think about how to change a simple string search using 'isInfixOf' into something that searches on characters, but returns a complex Cell type.

Searching the Grid Recursively

The moment we've all been waiting for: we'll now turn all of our hard work learning about functions and data types into an actual game that we can play!

Making the Game Playable

While we can now play our game, it still has a few rough edges. We'll now polish off a few of these. Frist, we want to create a random jumble of characters in the part of the grid that we're currently displaying with "underscore" characters. Next, we want to highlight each of the found words by uppercasing them.

Some Final Polish
  • No prior knowledge of Haskell is required.

Haskell is a powerful and well-designed functional programming language designed to work with complex data. Its emphasis on "purity" makes it easier to create rock-solid applications which stay maintainable and error-free even as they grow in scale.

This video would begin with the fundamentals and building blocks of Haskell programming language with special emphasis on functional programming. It will be covering how Haskell variables, syntax work alongwith Haskell datatypes and functions.

You will learn how to solve programming problems while creating an application with hands-on experience. You will then move on to learning writing expressions and high-order functions.

At the end of the video, you will be able to build a complete application with Haskell alongwith learning the important functionalities.

About the Author

Hakim Cassimally learned the basics of Lisp 15 years ago and has been interested in functional programming ever since. After Audrey Tang developed the first prototype of Perl6 in Haskell (Pugs), he got seriously interested in Haskell and has written, spoken, and evangelised about learning and writing Haskell since 2006.

Even when developing in other functional languages such as XQuery or traditional scripting languages such as Perl or Python, lessons learned from Haskell inform his approach and prototypes—whether it’s training software for a start-up, just-in-time sequencing systems for a car manufacturer, or data imports for a national media corporation.

His latest personal Haskell project is a Cryptic Crossword solver.

Who this course is for:
  • The video would appeal to programmers who want to learn the basics of Haskell and Functional Programming.