Foldable answers what a structure means when combined; Traversable answers what happens when effects run across it. Together they show how structure, effects, and abstraction interact.
This post introduces the fundamental algebraic structures of Semigroups and Monoids, demonstrating how the simple power of associative combination enables complex patterns like Applicative error accumulation and foldMap while emphasizing the importance of only ’earning’ an identity element when it truly exists in the domain.
This post explores the hierarchy of functional abstractions by reframing Functors, Applicatives, and Monads as a ladder of expressive power, moving from simple context-aware mapping to independent effect composition and eventually the sequential dependency of the Monad.
This post demystifies Haskell monads by reframing them as a familiar design pattern for managing context, transitioning from practical code examples in multiple languages to the underlying category theory of monoids over endofunctors.
This post introduces pattern‐match coverage checking in Vig, showing how Luc Maranget’s constructor‑matrix algorithm can be implemented in Rust to detect unreachable arms and guarantee exhaustiveness at compile time without any runtime cost.
Why and how to support hexadecimal, octal, and binary literals in your lexer. Improve dev experience by validating and parsing multiple bases at compile time.
Vig is a new functional programming language that blends subset polymorphism, refinement types, and rich set-based constructs to catch errors at compile time without runtime overhead.
Exploring the Shunting Yard algorithm, how does it parse infix expressions into postfix or AST form, with insights into handling precedence, associativity, and extensions for unary operators and functions.
AI’s arrival has shifted coding from forum deep-dives and trial-and-error to “vibe coding,” where LLMs handle boilerplate and prototyping but lack true understanding.