Haskell Fundamentals (2-Day Course) with Alejandro Serrano


  2 days


Gain a solid understanding of the fundamental concepts of Haskell, a powerful functional programming language, in this introductory course with Alejandro Serrano.

This introductory Haskell course is for developers with limited experience in any object-oriented or functional programming language. Learn the fundamentals of this mathematical-based language, change the way you think about programming, and start developing concise programs with increased type safety.

Haskell is an advanced open source language that’s purely functional. It features concise built-in concurrency and parallelism, thousands of libraries, and a rich ecosystem making it a valuable tool for any programmer.

Learn the basic concepts, techniques of this mathematical-based language, change the way you think about programming, and start developing concise programs with increased type safety.

This in-depth course combines virtual classroom lectures and hands-on guided exercises designed to introduce attendees to all the concepts, ideas, techniques, and libraries that they’ll need to start developing their first programs in Haskell.

Online Learning at Skills Matter
This course will be offered virtually over 2 full-day sessions.

Our virtual courses are designed to be as efficient as in-person instruction but provide increased inclusivity from the comfort of your own setting.

You’ll join Alejandro and participants from around the globe in a virtual classroom where you’ll utilize collaboration tools like Zoom and Slack to learn, discuss, and get hands-on with in-depth exercise sets. By the end of day one, you’ll be developing a small server that takes and responds to JSON requests.

Learn how to:

This course covers the foundations of Haskell, including:

  1. Simple Constructs
  2. Algebraic Data Types and Type Classes
  3. Input/Output
  4. Functional Error-Handling
  5. Higher-Kinded Type Classes: Functor & Monad
  6. Higher Kinded Type Classes: Applicative & Traversable
  7. Laziness
  8. Async, STM, Streaming, & Resources
  9. Combining Effects

About the Author

Alejandro Serrano Mena

Alejandro Serrano serves as a Senior Software Engineer at 47 Degrees, where he devotes his time to Haskell training and the development of Open Source projects for the Haskell ecosystem. Previously, he held several teaching and research positions at Utrecht University, where he obtained a Ph.D. in Software Technology (on the attractive-sounding topic of “error messages for compilers”).

Available dates

Dates coming soon

Can't make it on any of these dates?
Our team is happy to discuss other options with you.
Contact us at and mention ref: HASKFNDM2D-47D-02.
Private tuition and large-group discounts are also available. Find out more here.

Who should take this workshop?

This course is for developers who want to straighten their knowledge in Haskell.


One year of experience with any object-oriented or functional programming language.

Workshop Outline

Modules/topics covered

  • Simple Constructs
    • Simple definitions
    • Definitions using pattern matching and guards
    • Local bindings with let and where
    • Pattern matching over lists, recursion
    • Higher-order functions: maps and folds
    • Anonymous functions and partial application

  • Algebraic data types and type classes
    • Record types, and record syntax
    • Enumerations
    • General shape of algebraic data types
    • Differences from OOP modeling
    • Polymorphic types: lists, trees
    • First-order type classes: Eq, Ord, Show
    • Automatic derivation

  • Input/output
    • Concept of purity and tagging with IO
    • Do blocks: pure vs. impure values
    • Basic console and file input/output
    • Working with callbacks (example using network-simple)
    • Small introduction to streaming

  • Functional error handling
    • Maybe and Either as polymorphic types
    • Combinators to work on the happy path
    • Dealing with errors in IO: exceptions

  • Higher-kinded type classes: Functor and Monad
    • Looking at commonalities in maps -> Functor
    • Notion of type constructors and higher-kinded classes
    • Simulating stateful computations in Haskell
    • Looking at commonalities in bind -> Monad
    • Monadic utilities

  • Higher-kinded type classes: Applicative and Traversable
    • Applicative as generalizing map to n-ary functions
    • Applicative style programming
    • Generalizing map to mapM to traverse

  • Laziness
    • Execution model with thunks
    • Cyclic and infinite structures
    • Forcing execution to avoid leaks
    • IO, exceptions and laziness

  • Async, STM, streaming, resources
    • Spawning new computations with async
    • Concurrent execution, racing
    • Concurrent access with Software Transactional Memory
    • Managing single resources
    • Managing pools of resources

  • Laziness
    • Logging effects
    • Monadic classes and stacks
    • An algorithm with environment, state and logging
    • Integrating with IO effect

Thanks to our partners


Haskell Fundamentals (2-Day Course) with Alejandro Serrano
Dates coming soon