Haskell for Programmers

Haskell is quickly becoming the go-to language for high-performance and mission critical software. Yet for programmers who are experienced with traditional, imperative programming languages, Haskell’s way of doing things can seem counter intuitive and difficult to understand. But learning Haskell doesn’t have to be hard!

This 3-day workshop moves rapidly through the basics and digs deeply into seemingly complex topics such as monads and working with mutable state. The primary focus of this workshop is on real world software development with the occasional discussion of theory.

You’ll write and optimize software using popular Haskell tools and packages such as Cabal, HLint, ByteString, and Attoparsec. After the workshop you’ll be ready to write efficient Haskell code for real world production use.

Why Haskell?

Simple. Haskell is leading the way in compiler technologies for generating efficient and safe applications without placing unnecessary burdens on the programmer. By leveraging the Haskell type system the safety of code can be enforced, meaning bugs must be dealt with by the programmer instead of being passed silently on to users. While Haskell can’t ensure that all bugs have been squashed, it gets a lot closer than most mainstream languages.

Want to know more? This might help.

Agenda

Day 1 What is Haskell?

Syntax basics

Data types and literals

Type classes

Polymorphic functions

Polymorphic types

Lazy types Day 2 Thinking functionally

Type-driven development

User defined types

Composition

Modeling failure

Advanced type classes (e.g. Monoid, Functor, Applicative, Monad) Day 3 Let’s write real code!

QuickCheck and HSpec

Thunks and boxes

Time/space profiling

Making things strict

Exceptions

Moving forward







What’s Included?

Catered lunch each day

Access to all code used during the workshop

Digital copies of all class materials

1 hour of support after workshop completion

Prerequisites

Prior professional experience programming with an imperative language such as C, C++, Java, Ruby, Python, C#, etc. A laptop or the willingness to lug around a desktop computer. A unix-like operating system (e.g. Linux, Mac OS X) is highly recommended but not necessary.

Upcoming Workshops