Files
bara-lang/docs/bg/01-getting-started.md
dimgigov 10e4ec07d6 docs: reorganize into en/ and bg/ subfolders with numbered indices
- New docs/index.md with language selector
- docs/en/ — 01-getting-started, 02-architecture, 03-ai-integration,
  04-api-reference, 05-user-guide, 06-roadmap
- docs/bg/ — same structure in Bulgarian
- Root README.md trimmed to quick-start + links to docs/
- Removed old flat docs/ files (ARCHITECTURE.md, AI_FIRST.md, etc.)
- Added swap!/reset! examples to getting-started guides
2026-05-08 23:24:47 +03:00

3.6 KiB

← Към индекса


Първи стъпки

Диалект на Clojure, който се компилира до Nim → C → нативен бинарен файл.

Изисквания

  • Nim >= 2.0.0
  • GCC или Clang
  • make
  • curl (за AI функциите, незадължително)

Инсталация

git clone https://gitlab.com/balvatar/lisp-nim.git
cd lisp-nim
make build

Проверка

make check    # компилация + 276+ теста + всички примери

CLI Команди

Команда Описание
./cljnim compile <file.clj> Компилиране до Nim изходен код
./cljnim compile-lib <file.clj> Компилиране с експортирани функции (*)
./cljnim run <file.clj> Компилиране и изпълнение
./cljnim read <file.clj> Парсиране и печат на AST
./cljnim repl Стартиране на човешки REPL
./cljnim repl --json JSON REPL (за AI агенти)
./cljnim deps Разрешаване на зависимости от deps.edn
./cljnim -e '<код>' Оценка на израз
./cljnim ai '<описание>' Генериране на Clojure код с AI

Бързи примери

Hello World

;; examples/hello.clj
(println "Hello, Nim world!")
(println (+ 1 2 3))
$ ./cljnim run examples/hello.clj
Hello, Nim world!
6

Функции и рекурсия

(defn square [x] (* x x))
(defn factorial [n]
  (if (= n 0)
    1
    (* n (factorial (- n 1)))))

(let [a 5]
  (println (square a))
  (println (factorial a)))

loop/recur

(defn sum [n]
  (loop [acc 0 i 1]
    (if (> i n)
      acc
      (recur (+ acc i) (inc i)))))
(println (sum 10))  ;; => 55

Atoms (REPL)

user> (def a (atom 0))
user> (swap! a inc)
1
user> (reset! a 42)
42
user> (deref a)
42

AI Настройка (незадължително)

export DEEPSEEK_API_KEY="sk-..."
# или OPENAI_API_KEY, или MIMO_API_KEY

Виж 03-ai-integration.md за пълна AI документация.

Структура на проекта

├── src/              # Изходен код на компилатора
│   ├── cljnim.nim    # CLI входна точка
│   ├── reader.nim    # EDN парсер
│   ├── emitter.nim   # Clojure AST → Nim
│   ├── eval.nim      # Интерпретатор (REPL бърз път)
│   └── ai_assist.nim # AI API интеграция
├── lib/              # Runtime библиотеки
│   ├── cljnim_runtime.nim      # Нативен runtime
│   └── cljnim_runtime_js.nim   # JS runtime
├── tests/            # Тестове (8 файла, 276+ теста)
├── examples/         # Примери .clj
├── benchmarks/       # Бенчмаркове
├── docs/             # Документация
└── experiments/      # Web, WASM, native-lib target-и

Следващи стъпки