Open Source Committee
Intersect WebsiteIntersect Knowledge Base
  • ABOUT
    • Open Source Committee (OSC)
      • πŸ™‚Open Source Committee Charter
      • Committee Members
      • Open Source Committee 2025 Proposals
      • OSC Communications
      • OSC Engagement
      • How to Join or Contact Us?
    • 🀠Open Source Office (OSO)
      • πŸ˜›2025 OSO Roadmap
        • 😍2024 OSO Roadmap (Archive)
      • 😲Developer Advocate Program
        • State of Developer Experience Survey
        • Developer Advocate Cohort #1
      • 😎Strategic Partnerships
        • πŸ§‘β€πŸ«TODO Group
        • πŸ—οΈLinux Foundation Decentralized Trust (LFDT, prevousliy Hyperledger)
        • πŸ¦‰Bitergia Analytics
      • πŸ‘¨β€πŸ«Project Support Services
      • πŸ“ŠCardano’s Decentralized Shift: Key Players and Impact
      • πŸ“ˆCurrent Monthly Maturity Report
      • πŸ˜‰True Open Source Maturity Pilot
      • πŸ“œIntersecting Open Source and Sustainability: A Paid Open Source Model for Ecosystems
    • 🀩Open Source Strategy
  • πŸ“šGuides and Educational Resources
    • πŸšΆβ€β™‚οΈHitchhiker's Guide to Cardano
    • 🀯Onboarding Guide for Haskell Learners
    • πŸŽ“Functional Programming in Haskell
    • πŸ§‘β€πŸŽ“Advanced Functional Programming in Haskell
    • 😁Onboarding Guide for Rust Learners
    • πŸ˜‰Onboarding Guide for Aiken Learners
    • πŸ˜…Onboarding Guide for Nix Learners
  • Working Groups
    • Developer Experience Working Group
    • Commercialization Working Group
      • SWOT Analysis
    • OSC Working Group Archive
      • Project Incubation WG (Archive)
      • Open Source Libraries Working Group
  • Policies
    • Introduction
    • πŸ“œGovernance Policy
      • Documentation
      • Legal
      • Glossary
    • πŸ”Security Policy
    • πŸͺœContribution Ladder Framework
    • πŸ˜‹Project Incubation Lifecycle Framework
      • πŸ₯ΉProject Incubation: Acceptance Criteria
    • βœ…OSC Voting Policy
      • OSC Off-Cycle Vote 09.2024
  • OSC Meeting Minutes
    • Open Source Committee Meeting Minutes
      • 2024 Meeting Minutes
        • 😁(12/15/23) Meeting Minutes
        • πŸ˜†(01/12/24) Meeting Minutes
        • 😊(01/26/24) Meeting Minutes
        • πŸ˜‰(02/02/24) Meeting Minutes
        • 😎(02/16/24) Meeting Minutes
        • πŸ₯Ή(02/23/24) Meeting Minutes
        • 😍(03/01/2024) Meeting Minutes
        • 🫠(03/08/2024) Meeting Minutes
        • πŸ₯Ή(03/15/2024) Meeting Minutes
        • πŸ˜…(03/22/2024) Meeting Minutes
        • πŸ˜†(03/28/2024) Meeting Minutes
        • 😁(04/12/2024) Meeting Minutes
        • πŸ˜›(04/19/2024) Meeting Minutes
        • πŸ€“(04/26/2024) Meeting Minutes
        • πŸ₯Έ(05/03/2024) Meeting Minute
        • 😏(05/17/2024) Meeting Minutes
        • 🫨(06/07/2024) Meeting Minutes
        • 🀩(06/21/2024) Meeting Minutes
        • 😌(07/12/2024) Meeting Minutes
        • 😎(07/19/2024) Meeting Minutes
        • 🀐(08/02/2024) Meeting Minutes
        • πŸ™ƒ(08/08/2024) Meeting Minutes
        • 🀠(08/22/2024) Meeting Minutes
        • 😡(09/05/2024) Meeting Minutes
        • πŸ§”(09/20/2024) Meeting Minutes
        • πŸ‘‹(10/03/2024) Meeting Minutes
        • πŸ™ƒ(10/31/2024) Meeting Minutes
        • 🀀(11/07/2024) Meeting Minutes
        • πŸ˜›(11/14/2024) Meeting Minutes
        • πŸ˜…(12/12/2024) Meeting Minutes
        • πŸ˜‰(12/19/2024) Meeting Minutes
      • πŸ™‚(01/09/2025) Meeting Minutes
      • πŸ˜‰(01/16/2025) Meeting Minutes
      • πŸ™‚(01/23/2025) Meeting Minutes
      • πŸ˜‰(02/06/2025) Meeting Minutes
      • πŸ€“(02/20/2025) Meeting Minutes
      • πŸ˜†(03/06/2025) Meeting Minutes
      • πŸ™ƒ(03/20/2025) Meeting Minutes
      • 🫒(04/03/2025) Meeting Minutes
      • πŸ˜…(04/17/2025) Meeting Minutes
      • πŸ™ƒ(05/01/2025) Meeting Minutes
      • 🀭(05/15/2025) Meeting Minutes
      • πŸ˜›(05/29/2025) Meeting Minutes
      • πŸ₯³(06/12/2025) Meeting Minutes
  • All Monthly Reports
    • Bitergia Repo Maturity Reports
      • Monthly Maturity Reports - 2025
        • Monthly Maturity Report - January 2025
        • Monthly Maturity Report - February 2025
        • Monthly Maturity Report - March 2025
        • Monthly Maturity Report - April 2025
        • Monthly Maturity Report- May 2025
      • Monthly Maturity Reports - 2024
        • Monthly Maturity Report - May 2024
        • Monthly Maturity Report - June 2024
        • Monthly Maturity Report - July 2024
        • Monthly Maturity Report - August 2024
        • Monthly Maturity Report - September 2024
        • Monthly Maturity Report - October 2024
        • Monthly Maturity Report - November 2024
        • Monthly Maturity Report - December 2024
Powered by GitBook
On this page
  • 🧭 What This Course Covers
  • πŸͺœ Step-by-Step Learning Path
  • πŸ›  Tools You’ll Need
  • 🧠 Tips for Success
  • 🌟 Bonus: What to Do After This Course
  • Lectures
  • Resources
Edit on GitHub
  1. Guides and Educational Resources

Functional Programming in Haskell

This page is based off the teachings of Professor Graham Hutton, University of Nottingham. He has approved the creation of this page and usage of his resources.

PreviousOnboarding Guide for Haskell LearnersNextAdvanced Functional Programming in Haskell

Last updated 2 days ago

This is an advanced course on functional programming in Haskell. It is designed for second year computing students in Nottingham, but the lectures are also made available on .

The course is based on part II of . It is recommended for following the course, to purchase the below textbook, watch the youtube videos, slides are provided below to follow along, and then to try out to programming examples with resources below as well. All resources and links are provided at the bottom of the page. All credit goes to the , University of Nottingham.

🧭 What This Course Covers

The course is based on Part I of Graham Hutton’s textbook Programming in Haskell and introduces foundational topics such as:

  • Basic syntax and functions

  • Recursion and higher-order functions

  • Custom data types and pattern matching

  • List comprehensions

  • Lazy evaluation and interactive programs

The full lecture series is available free on YouTube, accompanied by slides and example code.


πŸͺœ Step-by-Step Learning Path

βœ… Step 1: Bookmark the Main Page

πŸ“Ž

This is your hub. It includes the video lectures, downloadable slides, and example code.


βœ… Step 2: Watch Lectures in Order

Each lecture builds on the last. Follow the sequence exactly:

  1. Start with Lecture 1 (Course Overview + Demo)

  2. Work through Lectures 2–17, one at a time

  3. Take notes, pause often, and try coding along


βœ… Step 3: Read the Book (Optional but Helpful)

πŸ“– Programming in Haskell (2nd edition) fills in background and provides exercises not covered in the videos.

Use it to:

  • Reinforce concepts

  • Get deeper explanations

  • Practice with written exercises


βœ… Step 4: Code Along with Examples

Experiment with:

  • Modifying functions

  • Creating your own recursive patterns

  • Implementing mini-projects like the Countdown game


βœ… Step 5: Do the Exercises

Some lectures include hands-on exercises (especially Recursion and IO). Try solving them yourself before checking any solutions.


πŸ›  Tools You’ll Need

  • GHC (Glasgow Haskell Compiler) Install from haskell.org

  • Editor: Use VS Code with the Haskell extension or any editor that supports Haskell

  • Hoogle: Use Hoogle to search for functions, types, and documentation


🧠 Tips for Success

  • Watch each video at 1x speedβ€”these are concept-heavy lectures

  • Type everything manually, even if code is provided

  • Don’t skip recursion or lazy evaluationβ€”they're core to Haskell

  • Use GitHub to track your progress or share your code


🌟 Bonus: What to Do After This Course

Once you’ve finished:

  • Continue to Part II of the textbook (monads, functors, etc.)

  • Explore other Haskell resources like:

    • Learn You a Haskell for Great Good

    • Real World Haskell

    • Haskell Programming from First Principles

Lectures

Additional material:

Resources

Download the example code (linked on the course site) and run them in your local Haskell environment or an online interpreter like or .

(internal version of this page)

(for all things Haskell)

(the Glasgow Haskell Compiler)

(for searching the libraries)

πŸ“š
πŸŽ“
YouTube
Programming in Haskell
Graham Hutton
Go to Course Page
replit
Try Haskell
Course Overview
Haskell Demo
Introduction
First Steps
Types and Classes
Defining Functions
List Comprehensions
Recursive Functions
Exercises on Recursion
Higher-Order Functions
How To Think Recursively
Declaring Types and Classes
The Countdown Problem
Interactive Programming
Exercises on Interaction
Lazy Evaluation
Course Wrap Up
YouTube playlist
Demo code
Lecture slides
Standard prelude
Course moodle page
Haskell home page
GHC
Hoogle