~ / path / services
Services deepening path
You already write Clojure services (Ring/Reitit, components, domain maps) and want a sequenced path through applied FP — FC/IS, error rails, pipelines, state, and optional theory depth.
Shape of a service
How to structure a Ring handler: pure domain core, thin I/O shell, data-oriented models, and lifecycle composition without globals.
Failure at the boundary
Expected vs unexpected failure, Result-style pipelines, Malli at the HTTP boundary, and the monad-shaped glue (with cats on the classpath).
On algebraic hierarchy: focus on Monoid through Monad; skip the SKI detour.
Data in motion
Pipelines that read like product requirements — threading, transducers, and mechanical refactors from imperative handlers.
State & concurrency in production
Atoms in apps, event logs as source of truth, Datalog-shaped queries, and concurrency choices for service workloads.
Last topic (CRDTs) is optional for single-node HTTP services.
Theory with payoff
optionalPolymorphism tradeoffs, folds beyond reduce, types that rule out invalid domain states — optional depth after the service-shaped core.
Optional refresh
Skipped basics — dip in if you want a quick syntax or semantics refresher before module 1.
Concept map → for lateral exploration outside this sequence.