Files
bara-lang/README.md
T
2026-05-08 14:51:47 +03:00

115 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Clojure/Nim
> Реализация на Clojure върху Nim-lang
## Какво е това?
Clojure/Nim е проект, целящ да предостави Clojure език и runtime върху Nim. Вдъхновен е от ClojureScript и Babashka, но вместо JavaScript или JVM, целта е компилация към Nim код и използване на Nim runtime.
## Защо?
- **Единен AST**: Nim предлага мощна макро система и AST манипулация
- **Производителност**: Компилиран към C, Nim дава C-подобна скорост с Lisp-удобство
- **Размер**: Минимален runtime footprint в сравнение с JVM
- **Метапрограмиране**: Съчетание на Clojure макроси и Nim макроси
## Архитектура
```
Clojure Изходен Код (.clj)
Clojure Reader (Clojure → Clojure Data)
Макро Разширение (Clojure Macros)
AST Транслатор (Clojure AST → Nim AST)
Nim Компилатор
C Код → Машинен Код
```
## Статус
> ⚠️ **Ранен етап** — Проектът е във фаза на планиране и базова имплементация.
Виж [ROADMAP.md](ROADMAP.md) за текущия прогрес.
## Бърз Старт
```bash
# Клониране
git clone <repo-url>
cd clojure-nim
# Изграждане
make build
# REPL
./cljnim
# Изпълнение на файл
./cljnim run examples/hello.clj
```
## Примери
```clojure
;; hello.clj
(ns hello)
(println "Здравей, Nim свят!")
(defn факториел [n]
(if (<= n 1)
1
(* n (факториел (- n 1)))))
(println "5! =" (факториел 5))
```
```clojure
;; Работа със структури от данни
(def данни
{:име "Иван"
:възраст 30
:езици ["Clojure" "Nim" "C"]})
(println (get-in данни [:езици 0]))
;; => "Clojure"
```
## Структура на Проекта
```
├── src/
│ ├── reader/ # Clojure reader (EDN парсер)
│ ├── analyzer/ # Semantic анализатор
│ ├── macros/ # Core macros (defn, let, if, и т.н.)
│ ├── emitter/ # Генератор на Nim код
│ ├── runtime/ # Clojure runtime в Nim
│ └── repl/ # Интерактивна обвивка
├── lib/
│ └── core.clj # Clojure core библиотека
├── tests/ # Тестове
├── examples/ # Примери
├── Makefile
└── README.md
```
## Изисквания
- Nim >= 2.0
- GCC или Clang
- make
## Лиценз
MIT License — виж [LICENSE](LICENSE).
## Благодарности
- [Clojure](https://clojure.org/) — Rich Hickey и екипът
- [Nim](https://nim-lang.org/) — Andreas Rumpf и общността
- Вдъхновено от ClojureScript, Babashka и Clojerl