- At `analyze` in analyzer.clj we can detect constants. Each one should be entered into a map, likely a dynamic var bound to an atom containing a map. This map should map each constant's original form to a unique identifier, possibly some human readable prefix like `cljs$constant$vector$` plus a short ID of some kind. Note many constants will be composed recursively of constants.
- alternatively this could be done in the compiler via an AST pass?
- In the compiler when we emit we can instead emit a reference to a lookup table that we will generate later
- In closure.clj we will emit this table after we emit core.cljs .but before any user code
- Initially this should be an option in order to give time to understand the overhead of this implicit initial allocation for ClojureScript programs.