gitwtfhub

wtf is nom?

kordano/nom — explained in plain English

Analysis updated 2026-07-18 · repo last pushed 2022-07-05

Audience · developerComplexity · 2/5DormantSetup · easy

TL;DR

A Clojure library that lets code handle errors as data ('anomalies') which automatically short-circuit through a chain of operations, keeping business logic focused on the happy path.

Mindmap

mindmap
  root((repo))
    What it does
      Errors as data
      Auto short-circuit
      Happy path code
    Tech stack
      Clojure
    Core tools
      fail
      nom arrow
      let-nom
    Use cases
      Backend services
      Data pipelines
      Edge error handling
    Audience
      Clojure developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Write backend service logic that stops cleanly on the first error without manual checks at every step.

REASON 2

Build a data processing pipeline where failures automatically propagate to a single handling point.

REASON 3

Thread a chain of function calls together with nom-> and stop immediately if any step fails.

REASON 4

Interop with error formats from other Clojure libraries without rewriting existing error handling.

What's in the stack?

Clojure

How it stacks up

kordano/nom0verflowme/alarm-clock0verflowme/seclists
LanguageCSS
Last pushed2022-07-052022-10-032020-05-03
MaintenanceDormantDormantDormant
Setup difficultyeasyeasyeasy
Complexity2/52/51/5
Audiencedevelopervibe coderops devops

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · easy Time to first run · 30min

Yoink these prompts

Prompt 1
Show me how to use the fail function in nom to create an anomaly when a function's input is invalid.
Prompt 2
Rewrite this Clojure function using nom's nom-> threading macro so it short-circuits on the first error.
Prompt 3
Explain how let-nom> in nom lets me bind multiple values and stop if any of them are errors.
Prompt 4
How does nom recognize error formats from other Clojure libraries, and can I use it alongside existing exception-based code?

Frequently asked questions

wtf is nom?

A Clojure library that lets code handle errors as data ('anomalies') which automatically short-circuit through a chain of operations, keeping business logic focused on the happy path.

Is nom actively maintained?

Dormant — no commits in 2+ years (last push 2022-07-05).

How hard is nom to set up?

Setup difficulty is rated easy, with roughly 30min to a first successful run.

Who is nom for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.