Haskell Curated
This is a curated list of various Haskell resources.
Tools
- The Haskell Tool Stack
- GHC Warnings
- Structuring your first Haskell project with Stack
- Ormolu
- pointfree.io
- GHCi multiline-input
- GHCi search path
Language
- https://www.haskell.org/documentation/
- Haskell Cheat Sheet
- case
- Haskell/Control structures
- Let vs. Where
- case expression in a do block
- Some deep nested indentation
- let with guards
- case within let indentation
- Guard within case
- Haskell Proposal: Simplify Deriving
- Deriving Via
- Smart Constructors
- List comprehension
- 24 Days of GHC Extensions
- Functional Dependencies
- Strategic Deriving
- Learn From Errors: Overlapping Instances
- PatternSynonyms
- View Patterns in GHC
- Record constructors
- Arrows Zoo
General
- graninas/software-design-in-haskell
- 4 Steps to a Better Imports List in Haskell
- Functional Programming in Haskell
- Advanced Functional Programming in Haskell
- Kowainik Blog
- GADTs for dummies
- Learn Haskell
- Serokell Blog
- DevTut
- Random Hacks
- Roman Cheplyaka Blog
- FPComplete
- Artyom’s tech notes
- Monadfix blog
- Lists vs Vectors vs Sequences
- Donnacha Oisin Kidney
- Carlo Hamalainen
- Advent of Haskell
- The vector package
- Fast Sudoku Solver in Haskell
- Haskell for Imperative Programmers
- Kwang’s Haskell Blog
- ocharles.org.uk
Monads
- The State Monad: A Tutorial for the Confused?
- The State Monad
- State Monad
- State Monad Comes To Help Sequential Pattern Matching
- Note to self: reader monad transformer
- A Simple Reader Monad Example
- ReaderT WriterT Monad Transformer Stack in Haskell
- Monads in 15 minutes: Backtracking and Maybe
- Haskell/Understanding monads/State
- State Monad
- Difference between State, ST, IORef, and MVar
- Haskell: State and StateT examples
- Simple StateT use
- Adventures in Three Monads
- Backtracking, Interleaving, and Terminating Monad Transformers
- Monad Transformers
- Monad transformers, free monads, mtl, laws and a new approach
- The ReaderT Design Pattern
- Capability: The Readert Pattern Without The Boilerplate
- Mutable State in Haskell
- State Monad Comes To Help Sequential Pattern Matching
- Reinventing Haskell Backtracking - Fischer
- Reader and Writer Monads
- Writer monad
Monadic Parsing
- Monday Morning Haskell
- Megaparsec tutorial
- Parser Combinators in Haskell
- Beginner’s guide to Megaparsec
- Exploring parser combinators
- Using Megaparsec on the WHILE Language
- Megaparsec basics
- Megaparsec
- Pragmatic Haskell for Beginners, Lecture 1
- Monadic parsing in Haskell
- Revisiting ‘Monadic Parsing in Haskell’
- Monadic parser combinators in Haskell
- Simple Monadic Parser in Haskell
- Parsing arithmetic expressions with Parsec
- Write a Forth in Haskell
Arrows
- Programming with Arrows
- Generalising monads to arrows
- Haskell for Imperative Programmers #37 - Arrows
- Arrow tutorial
- Practical Arrow Usage
- How to use Haskell arrows
- Working with Arrows in Scala
- Experiments with Arrows
Zippers
- The Zipper
- Zippers
- Zippers and Comonads in Haskell
- Zippers
- Zipping Trees
- A Note Of Caution On Zippers
- Zipper Tree Examples
- Zippers
Lenses
- Lenses
- Haskell state of the Lens
- Lens
- Haskell: Another Lens Tutorial
- Taking a Close look at Lenses
- Basic optics: lenses, prisms, and traversals in Haskell
- Exercises For Understanding Lenses
- A Little Lens Starter Tutorial
- Lenses
- Lenses, Folds, and Traversals
Graphs
Date/Time
- A Cheatsheet To The Time Library
- Quick guide to basic Date/Time operations in Haskell
- A Haskell Time Library Tutorial
Concurrency/Parallelism
- Beautiful concurrency
- A Tutorial on Parallel and Concurrent Programming in Haskell
- A tutorial on Parallel Strategies in Haskell
- The Par Monad for parallel Haskell programming: a tutorial
- Explicit speculative parallelism for Haskell’s Par monad
- stm: Software Transactional Memory
Comments