Scheme (tsz. Schemes)
✅ Funkcionális nyelv → preferálja az immutable adatokat ✅ Egyszerű, letisztult szintaxis ✅ Lexikális scope → hatókör szabályos, átlátható ✅ Tail recursion optimalizáció → rekurzió hatékonyan használható ✅ Elsőrendű függvények → függvények is adatok, átadhatók, visszaadhatók ✅ Makrók → kód generálható kódból ✅ Homoikónia → a kód is adatszerkezet (s-expressions) ✅ Minimalista standard → néhány mag-konstrukcióból sok minden felépíthető ✅ Continuations támogatása → call/cc
(call with current continuation)
(define (square x)
(* x x))
(display (square 5))
(newline)
👉 Kimenet: 25
Magyarázat:
(define (square x) (* x x))
→ függvény definiálásadisplay
→ kiírás(newline)
→ új sor kiírása
✅ define → változó vagy függvény definiálása ✅ lambda → névtelen függvény ✅ if / cond → elágazás ✅ **let / let* / letrec** → lokális változók ✅ begin → több utasítás csoportosítása ✅ quote / quasiquote → adatszerkezet létrehozás kódként
(define (factorial n)
(if (<= n 1)
1
(* n (factorial (- n 1)))))
👉 (factorial 5)
→ 120
(define square (lambda (x) (* x x)))
(display (square 6))
👉 (lambda (x) (* x x))
→ névtelen függvény
(define mylist '(1 2 3 4 5))
(car mylist) ; első elem → 1
(cdr mylist) ; többi elem → (2 3 4 5)
(cons 0 mylist); új lista: (0 1 2 3 4 5)
👉 Lista = alapelem Scheme-ben, mint minden Lisp nyelvben.
Jellemző | Scheme | Common Lisp | Clojure |
---|---|---|---|
Standard | Minimalista | Nagy, ipari | Minimalista, modern |
Dialektus | Oktatási + kutatás | Ipari, legacy rendszerek | JVM + modern FP |
Syntax | Tiszta, kicsi | Nagy, sok extra | Tiszta, Lisp + Java integráció |
Performance | Jó | Jó | JVM → Java-szintű |
Continuations | call/cc támogatott | Nem szabványos | Nem támogatott |
⚠️ Kevés ipari használat → inkább oktatásban, kutatásban népszerű ⚠️ Dialektusok között különbségek → Racket, Guile, Chicken, Gambit, MIT Scheme stb. ⚠️ Ökoszisztéma kisebb, mint pl. Python vagy Java → de egyszerűbb tanulni!
Scheme: