Autres fonctions et macros utiles
Fonctions booléennes et de comparaison : = == identical? not= not true? false? nil?
Divers : identity dotimes time assert with-open
Création de fonctions
| Fonction | Exemple d'expression | Valeur de retour |
|---|---|---|
| fn | (map (fn [x] (+ 2 x)) [1 2 3]) | (3 4 5) |
| #() reader macro | (map #(+ 2 %) [1 2 3]) | (3 4 5) |
| partial | (map (partial + 2) [1 2 3]) | (3 4 5) |
| comp | (map (comp - *) [2 4 6] [1 2 3]) | (-2 -8 -18) |
| complement | (map (complement zero?) [3 2 1 0]) | (true true true false) |
| constantly | (map (constantly 9) [1 2 3]) | (9 9 9) |
Affichage
Plusieurs fonctions permettent d'afficher des objets sur le flux de sortie courant de `*out*`. Les versions `-str` associent `*out*` à un objet `StringWriter`, y impriment les données et renvoient la chaîne résultante. `pr` imprime le ou les objets, séparés par des espaces s'il y en a plusieurs. `prn` fait de même et ajoute un saut de ligne. `print` et `println` appellent respectivement `pr` et `prn`, avec l'option `print-readably` (valeur par défaut : `true`) définie sur `nil`. Dans ce cas, les chaînes s'impriment sans guillemets ni encodage de caractères d'échappement, et les caractères sans le caractère d'échappement initial `\` ni encodage de caractères d'échappement. Par défaut, `pr` et `prn` impriment les objets de manière à ce qu'ils soient lisibles par le lecteur, tandis que `print` et `println` produisent un résultat destiné à la lecture humaine. Lorsque `print-readably` est différent de `nil`, l'affichage des métadonnées est activé ou désactivé par `print-meta`, étant défini par défaut sur `nil`.
Fonctions associées
| Catégorie | Fonctions |
|---|---|
| Afficher vers *out* | pr prn print println newline |
| Afficher vers une chaîne de caractères | pr-str prn-str print-str println-str with-out-str |
Prise en charge des expressions régulières
Les expressions régulières peuvent être compilées à la lecture via la macro de lecture `#"pattern"`, ou à l'exécution avec `re-pattern`. Les deux méthodes produisent des objets `java.util.regex.Pattern`.
- user=> (re-seq #"[0-9]+" "abs123def345ghi567")
- ("123" "345" "567")
- user=> (re-find #"([-+]?[0-9]+)/([0-9]+)" "22/7")
- ["22/7" "22" "7"]
- user=> (let [[a b c] (re-matches #"([-+]?[0-9]+)/([0-9]+)" "22/7")]
- [a b c])
- ["22/7" "22" "7"]
- user=> (re-seq #"(?i)[fq].." "foo bar BAZ QUX quux")
- ("foo" "QUX" "quu")
Fonctions associées
re-matcher re-find re-matches re-groups re-seq