gitwtfhub

wtf is bacwn?

whilo/bacwn — explained in plain English

Analysis updated 2026-07-18 · repo last pushed 2013-08-29

ClojureAudience · developerComplexity · 3/5DormantSetup · moderate

TL;DR

A Clojure library that brings Datalog, a declarative query language like SQL, but for in-memory data, to Clojure and ClojureScript apps.

Mindmap

mindmap
  root((repo))
    What it does
      Datalog queries
      Declarative rules
      Pattern matching
    Tech stack
      Clojure
      ClojureScript
      Datalog
    Use cases
      Query nested data
      Logical reasoning
      Recommendation matching
    Audience
      Clojure developers
      Backend engineers

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

Query complex nested Clojure data structures declaratively instead of writing loops and conditionals.

REASON 2

Implement logical reasoning over facts and rules, like matching projects to reviewers with the right expertise.

REASON 3

Build a recommendation engine that matches customer preferences against available products.

REASON 4

Search in-memory datasets for patterns the way you'd use SQL against a database.

What's in the stack?

ClojureClojureScriptDatalog

How it stacks up

whilo/bacwnbenfleis/throttlergardnervickers/local-meetups
LanguageClojureClojureClojure
Last pushed2013-08-292015-01-282016-02-04
MaintenanceDormantDormantDormant
Setup difficultymoderateeasyhard
Complexity3/52/54/5
Audiencedeveloperdeveloperdeveloper

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

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Alpha-stage library, the ClojureScript version doesn't fully work yet and the API may still change.

Yoink these prompts

Prompt 1
Show me how to write a basic Datalog query with Bacwn to filter a Clojure data structure.
Prompt 2
Help me convert a nested loop with conditionals in my Clojure app into a Bacwn Datalog query.
Prompt 3
Explain the difference between using Bacwn in Clojure versus ClojureScript, including current limitations.
Prompt 4
Walk me through defining rules in Bacwn to match records based on relationships between them.

Frequently asked questions

wtf is bacwn?

A Clojure library that brings Datalog, a declarative query language like SQL, but for in-memory data, to Clojure and ClojureScript apps.

What language is bacwn written in?

Mainly Clojure. The stack also includes Clojure, ClojureScript, Datalog.

Is bacwn actively maintained?

Dormant — no commits in 2+ years (last push 2013-08-29).

How hard is bacwn to set up?

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

Who is bacwn for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

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