Take the greediness out of maps.
Use it with Leiningen like so:
[fr.grunwald/lazymap "3.1.0"]
This is a (small) fork from Kotorak's lazymap library. LazyMap is a transparent wrapper around the map types of Clojure. It works similar to lazy-seq for sequences: the value associated with a key via lazy-assoc is not evaluated until it is actually accessed. So if the value is dissoc'd before it is accessed the code necessary to generate the value is not executed at all.
user=> (use 'lazymap.core)
nil
user=> (def m (lazy-hash-map :x (do (println :a) :y)))
#'user/m
user=> (get m :x)
:a
:y
user=> (get m :x)
:y
Copyright © 2008-2012 Meikel Brandmeyer, Nils Grunwald
Distributed under the Eclipse Public License, the same as Clojure.