Я пытаюсь понять, что ^: 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)
?