109 lines
3.8 KiB
Markdown
109 lines
3.8 KiB
Markdown
# Пътна Карта: 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 и структурирани отговори.
|