Skip to content

A hands-on journey to learning Haskell by building projects, exercises, and notes. Perfect for people from all backgrounds!

License

Notifications You must be signed in to change notification settings

AskewCow/haskell-by-doing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐏 Learn Haskell - A GitHub-Driven Learning Course

Welcome to the Haskell by Doing course! This is a modern, GitHub-optimized path to mastering Haskell, designed to grow your skills and your profile ⭐.

Whether you're just starting out or brushing up, this course will walk you through functional programming concepts using a structured, visual, and hands-on approach.


✨ Why This Course?

  • βœ… Beginner-friendly explanations
  • πŸ” Real-world code examples
  • πŸ” Step-by-step challenges
  • 🌱 Build incrementally- one concept at a time
  • 🌐 Grow your GitHub with visible progress


🧠 How This Course Works

1. πŸ“– Learn a Concept

  • Short, clear explanations
  • πŸ’‘ Minimal but focused code examples
  • 🎨 Visuals and edge cases explained

2. πŸ‹οΈβ€β™‚οΈ Try It Yourself

  • Solve challenges in each lesson folder
  • ⬆️ Push your work to GitHub
  • πŸ“ Add notes on what confused you

3. 🧩 Level Up Over Time

  • Each module builds on the last
  • 🧠 Develop intuition, not just syntax

4. πŸ—’οΈ Document What You Learn

  • Use the built-in note system (or create your own)
  • 🚩 Keep track of mistakes, gotchas, and "aha" moments



πŸ“ Reading Notes and Lessons in VS Code

All lessons and notes use Markdown (.md) files for a clean, readable experience in VS Code.

πŸ’‘ Tip:

  • Right-click any .md file (like README.md, 01-Fundamentals.md, etc.) and choose β€œOpen Preview”
  • Or use the shortcut:
    • Mac: Cmd + Shift + V
    • Windows/Linux: Ctrl + Shift + V

This opens a styled, easy-to-read view, perfect for:

πŸ“š What? πŸ“ File(s)
Lecture explanations /content/*.md
Your personal notes /notes/*.md
Exercise walkthroughs lesson folders

You can also split the editor and open the preview side-by-side with the text for even better workflow!




βš™οΈ Getting Set Up

πŸ“¦ Step 1: Install GHC, Cabal & Stack

Install via GHCup:

curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

This will install:

  • ghc β†’ The Haskell compiler
  • cabal β†’ Standard Haskell build tool
  • stack β†’ Optional alternative build tool (you may not need it, but it's good to have)

After installation, restart your terminal, then check your install:

ghc --version
cabal --version
stack --version  # optional

βœ… If you see version numbers, your installation is successful.


πŸ’» Step 2: Install VS Code + Extensions

Download Visual Studio Code if you don’t have it.

Recommended Extensions:

Extension Publisher Why
🟣 Haskell Haskell Full support: errors, warnings, type hints, go-to-definition (HLS).
🎨 Haskell Syntax Highlighting Justus Adam Adds proper syntax coloring for .hs files.

⚠️ What you don't need:

  • Live Server or Code Runner β†’ Not needed for Haskell
  • Old/unmaintained Haskell extensions β†’ stick to the two above

After installing the Haskell extension, VS Code will prompt you to install Haskell Language Server (HLS) if it isn’t already set up.
πŸ‘‰ Accept that prompt.

With both extensions installed, you’ll get syntax highlighting + smart Haskell editing.


βœ… Step 3: Clone the Course Repo

The course is pre-structured, i.e. you don’t need to create a new project. Just clone and open it:

git clone https://github.com/AskewCow/haskell-by-doing
cd haskell-course
code . # Opens folder in vsc

You’re ready to go! πŸŽ‰ Start with 01-Fundamentals/content


πŸ§ͺ Optional: Test That VS Code Works

Open any .hs file in VS Code and make sure you see:

  • Autocompletion
  • Type info when hovering over expressions
  • Inline error messages (if something’s wrong)
  • Haskell-specific color syntax

If all of those are working, then HLS is active and everything is set up properly.



πŸš€ Ready to Start Your Haskell Journey?

You're all set! πŸŽ‰ Dive into the lessons, experiment, and don't forget to jot down your discoveries and mistakes in your notes.

Star this repo
GitHub stars

Happy Haskell-ing! 🐏✨