whatisgithub

What is nom?

kordano/nom — explained in plain English

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

Audience · developerComplexity · 2/5DormantSetup · easy

In one sentence

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

What do people build with it?

USE CASE 1

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

USE CASE 2

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

USE CASE 3

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

USE CASE 4

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

What is it built with?

Clojure

How does it compare?

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 get it running?

Difficulty · easy Time to first run · 30min

Copy-paste 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

What 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.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.