Я пытаюсь понять, что делает ^:const
в clojure. Об этом говорит разработчик. http://dev.clojure.org/display/doc/1.3
(def константы {: pi 3.14: e 2.71})
(def ^: const pi (: pi константы)) (def ^: const e (: e константы))
Накладные расходы: e и: pi на карте происходит во время компиляции, поскольку (: pi constants) и (: e константы) оцениваются при оценке их родительских форм def.
Это сбивает с толку, поскольку метаданные для символа var, привязанного к символу pi
, и var, привязанного к символу e
, но нижеследующее предложение говорит, что это помогает ускорить поиск по карте, а не поиск в var.
Может кто-нибудь объяснить, что делает ^:const
и обоснование использования? Как это сравнивается с использованием гигантского блока let
или с использованием макроса типа (pi)
и (e)
?