Clojure (tsz. Clojures)
Clojure (kiejtés: klózsör) egy modern, funkcionális programozási nyelv, amely:
✅ Lisp alapú (S-expressions → szimbolikus kifejezések) ✅ A Java virtuális gépen (JVM) fut → Java ökoszisztémát is használhatja ✅ Immutable adatszerkezeteket használ → nincs változás helyben ✅ Erősen támogatja a párhuzamos programozást ✅ Interaktív (REPL támogatott)
Készítette: Rich Hickey → első verzió: 2007.
Mivel Clojure Lisp nyelvcsaládba tartozik, a kód “sok zárójelet” használ:
(println "Hello, World!")
Szintaxisa nagyon egyszerű: mindig prefix:
(operator operand1 operand2 ...)
Példa:
(+ 2 3 4)
; → 9
Listák:
'(1 2 3 4)
Map-ek:
{:name "Alice" :age 30}
Clojure indítása REPL-ben:
$ clj
Clojure 1.11.1
user=>
Itt írhatod be:
user=> (+ 1 2 3)
6
user=> (str "Hello, " "World!")
"Hello, World!"
REPL a Clojure kultúrában központi:
Clojure a következő immutable adatszerkezeteket adja:
Típus | Példa |
---|---|
List | (1 2 3)
|
Vector |
|
Map | {:a 1 :b 2}
|
Set | #{1 2 3}
|
Ezekből minden kombinálható.
Clojure-ban függvény így néz ki:
(defn greet
(str "Hello, " name "!"))
Használat:
(greet "Alice")
; → "Hello, Alice!"
Clojure igazi ereje a magasabb szintű függvényekben van:
(map inc )
; → (2 3 4)
(filter even? )
; → (2 4)
(reduce + )
; → 10
Clojure-ban immutable az adat:
(def numbers )
(def more-numbers (conj numbers 4))
; numbers →
; more-numbers →
conj = új collection-t ad vissza, nem módosítja az eredetit.
Clojure támogatja a párhuzamos feldolgozást:
atom
)ref
, STM)future
)core.async
)Példa future:
(def result (future (+ 1 2 3)))
@result
; → 6
Mivel a Clojure JVM-en fut, bármilyen Java osztályt használhatsz:
(new java.util.Date)
; → #inst "2025-06-06T08:00:00.000-00:00"
vagy rövidebben:
(java.util.Date.)
Metódushívás:
(.toUpperCase "hello")
; → "HELLO"
✅ Egyszerű és következetes nyelv ✅ Nagyon erős REPL támogatás ✅ Immutable adatszerkezetek → biztonságos párhuzamosítás ✅ Java ökoszisztéma előnyeit is használja ✅ Funkcionális szemlélet → rövidebb, kifejezőbb kód
1️⃣ Telepítsd a Clojure CLI-t → https://clojure.org/guides/getting_started 2️⃣ Használj REPL-t → clj
parancs 3️⃣ Olvass könyvet pl.: “Clojure for the Brave and True” 4️⃣ Játssz el az alap adatszerkezetekkel és a map / filter / reduce hármassal.