Edith Kurosawa
Type theorist — Edinburgh
Maintains indexed-transformers, writes about effect systems, lectures with chalk on actual chalkboards.
- GHC contributor
- Indexed monads
- Hask 2026 speaker
A community of functional programmers
A soft container for a notoriously sharp language — profiles, libraries, projects, and events from people who think in types.
Maintainers, lecturers, and library architects, presented with soft shadows and softer egos.
Type theorist — Edinburgh
Maintains indexed-transformers, writes about effect systems, lectures with chalk on actual chalkboards.
Compiler engineer — remote
Writes about typed holes as a teaching tool. Refactors with the patience of a glacier and the precision of a laser.
Streaming systems — Buenos Aires
Author of conduit-radial. Believes purity scales when you let go of cleverness in favor of legibility.
Formal methods — Kraków
Bridges Liquid Haskell with property-based testing. Translates papers into approachable blog posts roughly twice a month.
A single inflated container, four tabs — pillowy on the outside, precise on the inside.
A monad-transformer kit indexed by phase. Lets effects carry compile-time information about where they may run, without making call sites unreadable.
-- A phase-indexed reader transformer
newtype ReaderT p r m a
= ReaderT { run :: Phase p -> r -> m a }
instance Monad m => Functor (ReaderT p r m) where
fmap f (ReaderT g) = ReaderT $ \p r ->
f <$> g p r
-- Phase-restricted ask
askIn :: (KnownPhase p) => ReaderT p r m r
askIn = ReaderT $ \_ r -> pure r
A streaming library shaped around radial fan-out. Built for backpressure-aware pipelines that branch and merge without surprise allocation.
-- Fan a source out into N back-pressured sinks
fanOut :: MonadIO m
=> Source m a
-> [Sink m a]
-> m ()
fanOut src sinks = runConduit $
src .| awaitForever (\x ->
forM_ sinks (\snk -> yieldTo snk x))
An interactive teaching tool that turns GHC's typed holes into a guided workshop. Hover, fill, type-check, repeat.
-- Walk a value into a typed hole, step by step
solve :: Goal -> Tactic -> Either Stuck Term
solve g (Apply f) = applyHole g f
solve g Intro = introduceLambda g
solve g (Use n) = useHypothesis g n
Refinement types for Haskell. We curate examples, courseware, and a friendly path from simple predicates to full SMT-backed verification.
-- A list whose length is reflected in the type
{-@ type ListN a N = { v:[a] | len v == N } @-}
{-@ replicate' :: n:Nat -> a -> ListN a n @-}
replicate' :: Int -> a -> [a]
replicate' 0 _ = []
replicate' n x = x : replicate' (n - 1) x
Drag, scroll, or arrow your way through pillowy event cards.
Reykjavík, IS · Hybrid
Two days of paired refactoring on long-neglected libraries. Bring an old codebase, leave with a maintainer.
Keynote: Edith Kurosawa
Edinburgh, UK
Practitioners from indexed-transformers, fused-effects, and friends compare notes on production usage.
Panel: Sora Okwuosa
Buenos Aires, AR
A full-day workshop on conduit-radial, fan-out patterns, and back-pressure tooling.
Lead: Marisol Velasquez
Kraków, PL
A week-long crash course in refinement types, from invariants on lists to SMT-backed verification.
Lead: Aleksy Tomczak
Kyoto, JP
An afternoon of thoughtful talks on type-level programming, type families, and why elegance still matters.
Hosts: Hask Kyoto Circle
Online
Twenty short talks, twelve hours, one overflowing chat room. The community's annual round-up of work-in-progress.
Curator: haskeller.net