Namespaces

Un namespace est une unité d'organisation pouvant contenir des déclarations de variables (def), de fonctions (defn) et des ensembles d'expressions arbitraires. Nommé, il peut être défini avec ns.

(ns mcorbin.core)

(def one 1)
(defn add-one [x] (inc x))

Un namespace peut référencer un autre namespace et ainsi utiliser les éléments qu'il expose avec require.

(ns mcorbin.example1)
(require 'mcorbin.core)

(mcorbin.core/add-one 5)

Il est courant d'intégrer le require dans la form définissant le namespace :

(ns mcorbin.example2)
  (:require [mcorbin.core])

(mcorbin.core/add-one 5)

Afin de ne pas avoir à utiliser le nom du namespace complet, il est possible de lui affecter un alias grâce à :as.

(ns mcorbin.example3)
  (:require [mcorbin.core :as core])

(core/add-one 5)

Ou d'importer uniquement quelques fonctions avec refer.

(ns mcorbin.example4)
  (:require [mcorbin.core :refer [add-one]])

(add-one 5)

Précédent - Suivant -

(ns mcorbin.core)

(defn add-1 [x] (inc x))

(ns mcorbin.example1
  (:require [mcorbin.core :as core]))

(println (core/add-1 4))

(ns mcorbin.example2
  (:require [mcorbin.core :refer [add-1]]))

(println (add-1 5))

Powered by mcorbin - Available on Github