Files
dimgigov 87d6028487 Phase 1-4: Reader, Runtime, Macros, Nim Interop — 543x faster than JVM Clojure
- Reader: maps, sets, syntax-quote, dispatch macros, metadata
- Runtime: CljVal type system, 80+ core functions (collections, strings, math, IO)
- Emitter: full CljVal-based code generation, macro expansion, inline fns
- Macros: defmacro with compile-time evaluator, ->, ->>, and, or, when, cond, for, doseq
- Nim Interop: nim/module/function syntax, auto-import, type mapping
- CLI: cljnim -e '<code>' for quick evaluation
- Tests: 60 unit tests (reader + emitter)
- Benchmarks: AOT suite showing 543x startup, 679x factorial vs JVM Clojure
- CI: GitLab CI pipeline
- Runtime library: lib/cljnim_runtime.nim (1070+ lines)
2026-05-08 16:34:39 +03:00

34 lines
596 B
Clojure

; Macro test
(println "=== Threading macros ===")
; ->
(println (-> 5 (+ 3) (* 2)))
; => (* (+ 5 3) 2) = 16
; ->>
(println (->> [1 2 3] (map (fn [x] (* x x))) (reduce + 0)))
; => 14
(println "=== defmacro ===")
(defmacro unless [condition & body]
(list 'if condition nil (cons 'do body)))
(unless false
(println "unless works!"))
(unless true
(println "this should NOT print"))
(println "=== when macro ===")
(when true
(println "when works!"))
(println "=== and/or ===")
(println (and true true))
(println (and true false))
(println (or false true))
(println (or false false))