Bases & syntaxe
(def x 42)
Déclaration d'une variable. Utilisé pour stocker des valeurs.
Structures de données
Vectors
[1 2 3]
Liste ordonnée et modifiable.
Lists
'(1 2 3)
Liste ordonnée et non modifiable.
Sets
#{1 2 3}
Ensemble de valeurs uniques.
Maps
{:name "Alice" :age 25}
Association clé-valeur.
Fonctions & methodes essentielles
map
(map inc [1 2 3])
Applique une fonction à chaque élément d'une collection.
filter
(filter even? [1 2 3 4])
Filtre les éléments de une collection selon un prédicat.
reduce
(reduce + [1 2 3])
Réduit une collection à une valeur en appliquant une fonction.
Patterns courants
Destructuring
(let [{:keys [name age]} {:name "Alice" :age 25}]
(println name age))
Déstructuration de structures pour extraire des valeurs.
Operations avancées
Threads
(defn fetch-data []
(Thread/sleep 1000)
"Data")
(Thread/.start (fn [] (fetch-data)))
Utilise les threads pour effectuer des tâches en parallèle.
Macros
(defmacro when-let [bindings & body]
`(if-let ~bindings
~@body))
Macro personnalisée pour conditions avec let.
Debugging & outils
println
(println "Debug:" x)
Affiche des informations de débogage.
prn, ppr, pprint
(prn {:key "value"})
(pprint {:key "value"})
Imprime des structures de données complexes de manière lisible.
Debugging avec IDE
Utilisez les fonctionnalités de débogage intégrées dans votre IDE (IntelliJ IDEA, VSCode) pour suivre le flux du programme et inspecter les valeurs.