Learning Path: Haskell: Functional Programming in Haskell
0.0 (0 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
3 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Learning Path: Haskell: Functional Programming in Haskell to your Wishlist.

Add to Wishlist

Learning Path: Haskell: Functional Programming in Haskell

Explore functional programming and build real-world applications with Haskell
0.0 (0 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
3 students enrolled
Created by Packt Publishing
Last updated 9/2017
English [Auto-generated]
Current price: $12 Original price: $200 Discount: 94% off
4 days left at this price!
30-Day Money-Back Guarantee
  • 5 hours on-demand video
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion

Training 5 or more people?

Get your team access to Udemy's top 2,000 courses anytime, anywhere.

Try Udemy for Business
What Will I Learn?
  • Understand how functional programming addresses complexity
  • Get familiar with the general characteristics of functional programs
  • Learn GHCi in brief
  • See how Haskell compares with other functional programming languages
  • Learn how to parse command-line options using the applicative style
  • Understand how to use strict and lazy file I/O
  • Learn to handle various common Haskell string types
  • Learn to read, create, delete, and update data items in your application
View Curriculum
  • Experience in Object-oriented programming is required.

Haskell is one of the powerful 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.

If you're a developer with some experience in object-oriented programming languages, such as C, C++, Java, and wish to build applications using Haskell, then you should surely go for this Learning Path.

Packt’s Video Learning Path is a series of individual video products put together in a logical and stepwise manner such that each video builds on the skills learned in the video before it.

Let's take a quick look at your learning journey. This Learning Path begins with making your familiar with the concepts of functional programming and Haskell language. Then, you will learn to address all the problems with functional programming and Haskell with distinguishing the difference between the two. You will also learn Haskell in depth with creating your first Haskell program. Next, you will be briefed through GHCi (Glasgow Haskell Compiler). As you progress, you will learn to develop real programs that will make use of file I/O, command-line parsers and various third-party packages. You will then see how to perform data processing and handling of the program. Finally, you will learn the different ways of storing data in your file system and interacting with them.

By the end of this Learning Path, you will be able to write your own Haskell programs and also have ample knowledge of the important functionalities of Haskell.

About the Author:

For this course, we have the best works of this esteemed author:

  • Richard Cook is a staff software engineer at Tableau Software and works on high-performance relational database systems. He works primarily in C++, but has experience in a broad range of languages and technologies. He is a keen user of Haskell in his spare time and is frequently able to apply his functional programming and Haskell experience to his daily work. He is organizer of the Seattle Area Haskell Users’ Group and an active member of the Seattle functional programming community. He is currently developing a machine-learning framework for Haskell. He has a deep interest in programming languages and type systems in general, having developed compilers and developer tooling in the past. He is also a keen user of Python and C# and works regularly on all major desktop operating systems and dabbles with web applications.
Who is the target audience?
  • This Learning Path is for software developers with some experience in object-oriented programming languages such as C, C++, Java, C#, Python, or Ruby.
Compare to Other Haskell Courses
Curriculum For This Course
34 Lectures
Fundamentals of Practical Haskell Programming
16 Lectures 02:59:35

This video provides an overview of the entire course.

Preview 04:09

This video takes the user through the steps required to install the Haskell Stack build tool on Windows using Windows 10 Pro as an example.

Installing Stack on Windows

This video takes the user through the steps required to install the Haskell Stack build tool on Mac OS using Mac OS X 10.10.5 (Yosemite) as an example.

Installing Stack on Mac OS

This video takes the user through the steps required to install the Haskell Stack build tool on Linux using Ubuntu 12.04.5 LTS as an example.

Installing Stack on Linux

This video will develop motivation for learning a new approach to software development and a new and decidedly different programming language.

Preview 06:30

This video will outline the approach to managing complexity that functional programming (FP) encourages.

The FP Way

This video will talk about what Haskell has in common with other functional programming languages as well as the ways in which it is different.

The Haskell Way

This video will demonstrate some more realistic programs, incrementally built up from simpler programs. It will run them in GHC’s interpreted mode. We will see more Haskell syntax encounter more functions from Haskell’s standard prelude.

Our First Haskell Programs

Haskell is a whitespace-sensitive programming language. It’s worth gaining some comfort with the indentation rules, even though they correspond—for the most part—to the “obvious” way to lay a program out. We’ll relate layout to lexical scoping of names.

Whitespace, Layout, and Scoping

When we’re learning a new programming language, it can be very helpful to be able to query the types of values and expressions, and to be able to browse types and modules. The GHC compiler provides the GHCi read-evaluate-print loop, which allows us to inspect Haskell code at runtime.

GHCi and Interactive Haskell

Haskell employs a non-strict evaluation strategy which can be strange for newcomers to the language. Furthermore, we will inevitably write buggy code. GHCi has useful debugging capabilities that can allow to address both of these concerns.

Debugging with GHCi

We will drill deeper into values, function application and composition, and the various ways to declare functions.

Values and Expressions

So far, we have only skimmed over types and type signatures. You need to know enough to be able to read function declarations and build our own functions and values.

Types and Type Signatures

We’ve looked at built-in types and values and functions that use them; you need to learn how to define our own composite data types. This will use Haskell’s support for user-defined algebraic data types.

Algebraic Data Types

Haskell’s primary mechanism for implementing abstract data types is the type class. We need to know about some of the common built-in type classes as well as how to implement our own type classes and type class instances.

Type Classes

You learn all about declaring our own ADTs and creating values for them. Before we can really consume ADTs, you need to know how to 

extract values from them using pattern matching.

Pattern Matching
Building an Application with Functional Haskell
18 Lectures 02:09:47

This video gives an overview of entire course.

Preview 03:12

We’ve learnt enough Haskell to write real programs, but what can Haskell programs do and what is the high-level structure of real programs?

  • Discuss the kinds of application we can build in Haskell
  • Enumerate the types of interfaces and interactions Haskell programs can employ
  • Establish what type of UI and operations our program will perform 
What Real Programs Do?

The aim of this video is to specify the desired behaviour of our program, its operations, and interactions.

Command-line To-do List

Various packages exist for parsing command-line options. In this video, we’ll focus on one in particular optparse-applicative.

The Applicative Way

Optparse-applicative allows us to build up complex parsers using the functor, applicative, alternative type classes and product, and sum algebraic data types. 

ADTs for Command-line Options

The aim of this video is to implement our whole parser and learn how to implement subcommands and finish off our parser.

Subparsers and Wrapping Up

Haskell provides many ways to interact with files on the file system, perhaps most significantly, there is a strong distinction between lazy and strict I/O which can have important consequences for the behaviour of our programs.

File I/O and Laziness

We have discussed Haskell’s various types used to represents character strings. In this video, we’ll extend our study of file I/O operations to cover both ByteString and Text types.

Strings Revisited

We will need to persist our application’s data to the file system, choosing a structured file format is an important consideration. In this video, we will learn how to parse and write YAML.

Parsing and Writing YAML

Our command-line parser is not yet complete. We used loosely typed strings where we should’ve used more structured types for our arguments.

Other Data Types

To-do list items are serialized to the file system using the YAML format. We need to implement the Read command to retrieve the data for a

single item and display it on the terminal.

Reading Items

The aim of this video is to implement the Add command to create the data for a new item and add it to the data on the file system.

Creating Items

In this video, we will implement the Remove command to remove the data for a single item from the data on the file system.

Deleting Items

In this video, we will implement the Update command to modify the data for a single item in the data stored on the file system.

Updating Items

In this video, we will implement the List command to list all the to-do list items in the data on the file system.

Displaying Our To-do List

In this video, we will implement the housekeeping commands Info and Init to display information about the to-do list on the file system and to (re)initialize the to-do list file respectively.

Other Commands

We have written a full, working, and useful Haskell application. In this video, we will see what our next steps in developing our app are and what the kinds of scaling issues we’ll encounter are.

Building on Our Example

In this video, we`ve given the range of packages available in the ecosystem, ways to effectively search repositories which is an important skill.

Wrapping Up
About the Instructor
Packt Publishing
3.9 Average rating
8,274 Reviews
59,143 Students
687 Courses
Tech Knowledge in Motion

Packt has been committed to developer learning since 2004. A lot has changed in software since then - but Packt has remained responsive to these changes, continuing to look forward at the trends and tools defining the way we work and live. And how to put them to work.

With an extensive library of content - more than 4000 books and video courses -Packt's mission is to help developers stay relevant in a rapidly changing world. From new web frameworks and programming languages, to cutting edge data analytics, and DevOps, Packt takes software professionals in every field to what's important to them now.

From skills that will help you to develop and future proof your career to immediate solutions to every day tech challenges, Packt is a go-to resource to make you a better, smarter developer.

Packt Udemy courses continue this tradition, bringing you comprehensive yet concise video courses straight from the experts.