3 pointsby danefilipczak7 hours ago1 comment
  • danefilipczak7 hours ago
    Igor is a constraint programming library for Clojure. It shadows Clojure's core operators (+, =, and, every?, etc.) so constraint expressions read like normal Clojure — but when any argument is a decision variable, they build an AST that compiles down to industrial solvers via MiniZinc.

    It supports integer arithmetic, set algebra (intersection, union, difference, subset/superset), universal quantification, extensional constraints (table, regular/DFA, cost-regular), and a graph constraint library for paths, spanning trees, circuits, and connectivity — all composable and optimizable.

    I built it because I wanted to express constraint problems in Clojure without leaving the language or losing composability.