Haskell Beginners' Track
summary
Condensed two two‑hour sessions teach how to define datatypes and functions, use pattern matching and inferred types, write recursive list/stack code and higher‑order functions, then sequence IO with randomRIO and sequence/replicateM. Examples build a card‑stack interpreter (colors, ranks, score, remove, reverse, match), show GHCI and HLS eval workflows and cabal setup, and sketch an interactive guessing game; materials and solutions live at the GitHub repo. Attendance hits 35–40 attendees and all examples evaluate in GHCI or the repo branch.
AI-written summary · about
chapters (72)
- 0:00Welcome and introduction to the beginners' track
- 0:27Why Andreas chose to teach beginners this year
- 3:29Instructions on asking questions during the session
- 6:35Recommended Haskell books and learning resources
- 9:40Navigating the example project directory
- 13:03First Haskell definition and explanation
- 16:18Introduction to type signatures in Haskell
- 19:35Showing values using the Show type class
- 22:46How Show instances work for different types
- 25:58Controlling what gets shown in output
- 29:08Importance of parentheses in expressions
- 32:35Writing function type signatures properly
- 35:48Working with sum types and data constructors
- 39:26Reusing previous definitions and values
- 42:31Applying arguments and understanding evaluation
- 45:42Error messages and debugging in Haskell
- 48:49Improving code readability and documentation
- 51:56Alternative syntax for record definitions
- 55:39Consequences of changing a function signature
- 59:06Type exploration: inspecting types in GHCi
- 1:03:48Using complex numbers and more data types
- 1:07:38Start of first Q&A round
- 1:10:46Combining functions and types – question
- 1:14:59How many pattern matches needed?
- 1:18:11File and module structure in Haskell
- 1:21:59Type inference and readability trade-offs
- 1:25:07Use of primes in identifiers
- 1:28:14Comparing values – equality check
- 1:31:36Systematic test design in Haskell
- 1:35:19Equality operations and logic
- 1:39:15Type behavior testing with GHCi
- 1:42:31Custom helper function exercise
- 1:45:49Identifier naming conventions
- 1:49:05Advice for more advanced users
- 1:52:36Implementing a remove function
- 1:57:04Using case expressions in logic
- 2:00:14Stack logic and functional approach
- 2:03:21Manipulating card stack
- 2:06:57Exploring additional code file
- 2:10:45Recursive operations on stack
- 2:13:57Reversing list with recursion
- 2:17:00Interpreting runtime results
- 2:20:13Output types and Maybe handling
- 2:24:10Stack walkthrough completed
- 2:27:23Writing minimal card selector
- 2:30:27Result interpretation with Just
- 2:33:44Stack type and theoretical background
- 2:37:44Evaluation details in interpreter
- 2:42:09Handling full stack and reordering
- 2:45:27Appending operations explained
- 2:49:19Generalizing list processing
- 2:53:10Avoiding unnecessary comparisons
- 2:56:36Card presence check
- 3:01:26Final function examples
- 3:05:03Replace card with matching card
- 3:08:22Letting the compiler infer types
- 3:11:45Types and behavior deep dive
- 3:15:53Constraints in type declarations
- 3:19:05Explaining dual constraints
- 3:22:26Alternate coding strategies
- 3:26:13Monads and fundamental concepts
- 3:29:26Ambiguity in operator types
- 3:33:08Roll operation and next steps
- 3:36:47What does return mean in Haskell?
- 3:40:54Simplified explanation of monads
- 3:44:02Why functional purity matters
- 3:47:25Domain-specific types and IO
- 3:50:27Writing simple monadic actions
- 3:54:27Sequencing actions in Haskell
- 3:58:41Executing repeated actions
- 4:02:15Questions about sequencing and do blocks
- 4:06:25Final exercises and wrap-up
related talks
03h 04mHaskell for Beginners: Learn Functional Programming from Scratch
01h 22mHaskell for Everyday Programmers
02h 05mWhy We’re Teaching Programming Wrong: A Haskell Perspective
45mHow I Learned Haskell by Writing Tiny Games
01h 04mHaskell - A Peek Inside the Ivory Tower
59mWeb Programming and Streaming Data in Haskell - Part 1 of 2
49mMaking sense of the Haskell type system
46mPainless software development with Haskell
