Как работает Clojure ^: const?

Я пытаюсь понять, что ^: const делает в clojure. Это то, что написано в документации разработчика. http://dev.clojure.org/display/doc/1.3

(def constants {: пи 3.14 : e 2.71})

(def ^: const pi (: константы pi)) (def ^: const e (: e constants))

Накладные расходы на поиск: e и: pi на карте происходят во время компиляции, поскольку (: константы pi) и (: e constants) вычисляются, когда их родительские def оцениваются.

Это сбивает с толку, поскольку метаданные предназначены для переменной, привязанной к символу pi , и переменной, привязанной к символу e , но в предложении ниже говорится, что это помогает ускорить поиск по карте. , а не поиск var.

Может ли кто-нибудь объяснить, что делает ^: const , и причины его использования? Как это соотносится с использованием гигантского блока let или макроса типа (pi) и (e) ?

41
задан bmillare 6 February 2012 в 15:33
поделиться