Quando usar um Var em vez de uma função?

Estou examinando o livro de desenvolvimento da web clojure e ele me diz para passar o objeto var do manipulador (abaixo definido) em vez da própria função, porque a função mudará dinamicamente (é isso que o wrap-reload faz).

O livro diz:

"Observe que precisamos criar um var a partir do manipulador para que este middleware funcione. Isso é necessário para garantir que o objeto Var que contém a função atual do manipulador seja retornado. Se usássemos o manipulador, o aplicativo veria apenas o valor original da função e alterações não seriam refletidas. " Eu realmente não entendo o que isso significa, os vars são semelhantes aos ponteiros c?

(ns ring-app.core
  (:require [ring.adapter.jetty :as jetty]
            [ring.util.response :as response]
            [ring.middleware.reload :refer [wrap-reload]]))

(defn handler [request]
  (response/response
   (str "<html>/<body> your IP is: " (:remote-addr request)
        "</body></html>")))

(defn wrap-nocache [handler]
  (fn [request]
    (-> request
        handler
        (assoc-in [:headers "Pragma"] "no-cache"))))

Aqui está a chamada do manipulador:

(defn -main []
  (jetty/run-jetty
   (wrap-reload (wrap-nocache  (var handler)))
   {:port 3001
    :join? false}))

questionAnswers(3)

yourAnswerToTheQuestion