# Пътна Карта: Clojure/Nim (AI-First Edition) ## Фаза 0: Компилаторно Ядро ✅ - [x] Clojure Reader (EDN парсер) - [x] AST → Nim Emitter - [x] CLI (`compile`, `run`, `read`) - [x] Специални форми: `def`, `defn`, `fn`, `let`, `if`, `do`, `quote` - [x] Оператори: `+`, `-`, `*`, `/`, `=`, `<`, `>` - [x] Функции: `println` → `echo` - [x] Примери: `hello.clj`, `math.clj` (факториел) ## Фаза 1: AI-First REPL 🔄 **Цел:** REPL, който AI може да ползва през терминал без редактор. ### 1.1 Структуриран REPL - [ ] JSON/EDN режим (`cljnim repl --json`) - [ ] Batch evaluation (`cljnim run-batch script.clj --format json`) - [ ] Структурирани грешки (line, column, type, message, trace) - [ ] Метаданни в отговора (ms, ns, form, type) ### 1.2 Self-Describing Система - [ ] `(doc fn)` — връща структурирани метаданни - [ ] `(apropos "str")` — търсене на функции - [ ] `(source fn)` — изходен код на функция - [ ] `(ns-publics 'clojure.core)` — листване на публични символи ### 1.3 File Operations - [ ] `(file/read "path")` — четене на файл - [ ] `(file/write "path" "content")` — запис на файл - [ ] `(file/append "path" "content")` — добавяне - [ ] `(file/ls "dir")` — листване на директория - [ ] `(file/exists? "path")` — проверка ### 1.4 Git Operations (вградени) - [ ] `(git/status)` — текущ статус - [ ] `(git/diff)` — разлики - [ ] `(git/add "file")` — stage - [ ] `(git/commit "msg")` — commit - [ ] `(git/push)` — push - [ ] `(git/log)` — история ## Фаза 2: Persistent Структури от Данни **Цел:** Истински Clojure immutable структури. - [ ] **Persistent Vector** (Hash Array Mapped Trie) - [ ] **Persistent Map** (HAMT) - [ ] **Persistent Set** - [ ] `conj`, `assoc`, `dissoc`, `get`, `get-in` - [ ] `nth`, `first`, `rest`, `last`, `count` ## Фаза 3: Clojure Core Библиотека **Цел:** Достатъчно функции за реални скриптове. ### 3.1 Seq функции - [ ] `map`, `filter`, `reduce` - [ ] `take`, `drop`, `partition` - [ ] `concat`, `interleave` - [ ] `range` ### 3.2 Низове и IO - [ ] `str`, `pr-str`, `println`, `prn` - [ ] `slurp`, `spit` - [ ] `read-line` ### 3.3 Мета - [ ] `meta`, `with-meta`, `vary-meta` - [ ] `type`, `instance?` ## Фаза 4: Макро Система **Цел:** `defmacro` да работи. - [ ] `macroexpand`, `macroexpand-1` - [ ] `syntax-quote`, `unquote`, `unquote-splicing` - [ ] `gensym` - [ ] Core макроси: `->`, `->>`, `and`, `or`, `when`, `cond` ## Фаза 5: Nim Interop **Цел:** Достъп до целия Nim ecosystem. - [ ] `(nim/import "strutils")` — import на Nim модул - [ ] `(nim/ffi "math.h" :functions [["sin" :double [:double]]])` — C FFI - [ ] `(nim/call "strutils.join" ", " ["a" "b"])` — извикване ## Фаза 6: AOT Компилация + REPL **Цел:** Бързо стартиране на скриптове. - [ ] AOT компилация на цели проекти - [ ] Кеширане на компилирани модули - [ ] REPL в self-hosted режим (като ClojureScript) ## Фаза 7: Многонишковост - [ ] **Atoms** (CAS) - [ ] **Agents** - [ ] **core.async** channels (упростен вариант) ## Текущ Фокус **Фаза 1 — AI-First REPL** Следваща задача: `cljnim repl --json` с batch evaluation и структурирани отговори.