Meet the Projects

HCat

The first project you’ll build is called hcat, a command line pager in the spirit of tools like less and bat. As you work through this project you’ll learn how to use Haskell to build programs that do IO, work with the filesystem, and how to design interactive programs.

Filepack

The second project you’ll build is a tool to archive and extract files. This program is similar to the tar application. As you work through this project you’ll learn how to design programs using type classes, how to write parsers, and how to write programs that combine multiple different side effects.

Spellcheck

The third project you’ll build is a spell checking utility. This program can be used standalone, or you can use it to extend the capabilities of hcat. As you work though project you’ll learn how to write Haskell code that is efficient and runs quickly by exploiting lazy evaluating to remember intermediate computations, using internal mutability to write pure functions with the efficiency of procedural code, how to work with efficient data structures, like vectors, and how to profile your programs.

ShellCommand

The fourth and final project you’ll build is an embedded domain specific language for writing shell scripts. You’ll use type level programming to build a DSL that is safe and ergonomic for users while learning about features like type families, GADTs, and Haskell’s Kind system.