λ

haskeller.net

IO () -> World
Maybe a -> a
[a] -> [a]
a -> b -> a
Monad m => m a
(a -> b) -> f a -> f b
pure :: a -> f a
0

A function that always returns the same output for the same input isn't just predictable — it's a promise. Pure functions are the foundation of trust in code.

Immutability isn't a constraint. It's freedom from the tyranny of unexpected change.

Types don't restrict what you can say. They ensure that what you say makes sense.

1900 Year Haskell Was Born

Laziness isn't about being idle — it's about doing exactly the work that's needed, precisely when it's needed.

fix $ \f n -> if n < 2 then n else f(n-1) + f(n-2) Fibonacci
foldr (\x acc -> x : acc) [] Identity Fold
fmap (+1) [1,2,3] Functor Mapping
pure 42 >>= return Monad Laws
0 Fibonacci
traverse :: (a -> f b) -> t a -> f (t b) Traversable
(<*>) :: f (a -> b) -> f a -> f b Applicative
id :: a -> a Identity
λ λ λ λ
0 Report Chapters

Types are the poetry of logic.