Skip to content

Instantly share code, notes, and snippets.

@cscalfani
cscalfani / DiscoveringApplicative.md
Created December 27, 2017 02:23
Discovering Applicative Functors in Haskell

Discovering Applicative Functors in Haskell

When first learning Applicatives, they always seemed an oddball thing to me. At first, Functors made sense and Monads sort of made sense, but Applicatives felt shoehorned in between the two.

That is until I was reading Programming In Haskell by Graham Hutton, Second Edition (section 12.2) on Applicatives. His explanation takes a bit of a leap and is presented in an odd order, but I think I can reorder the information in such a way that we can feel as if we are discovering Applicative Functors (or Applicatives for short) ourselves.

Start with Functor

Let's remind ourselves of the Functor class definition:

@cscalfani
cscalfani / MonoidsInHaskellAnIntroductions.md
Last active December 26, 2025 19:24
Monoids in Haskell, an Introduction

Monoids in Haskell, an Introduction

Why should programmers care about Monoids? Because Monoids are a common pattern that shows up over and over in programming. And when patterns show up, we can abstract them and leverage work we've done in the past. This allows us to quickly develop solutions on top of proven, stable code.

Add Commutative Property to a Monoid (Commutative Monoid) and you have something that can be executed in parallel. With the end of Moore's Law, parallelism is our only hope to increasing processing speeds.

What follows is what I've learned after studying Monoids. It is hardly complete, but hopefully will prove to be helpful as an introduction for others.

Monoid Lineage

@CMCDragonkai
CMCDragonkai / functor_examples.md
Last active March 3, 2026 06:20
Haskell: Explanation of Functors & Natural Transformations

Functor Examples

Const

(not to be confused with the function const)

newtype Const a b = Const { getConst :: a }