One caching strategy is to retain the X most-recently-referenced items and discard any additional items. In [https://groups.google.com/d/msg/comp.lang.tcl/_3KpgMHU6jM/EOueixG0NN8J%|%"high performance" MRU-list ...], [comp.lang.tcl], 2015-01-21, [Christian Gollwitzer] suggests an implementation of '''most-recently used''' that takes advantage of the order-preserving operation of [dict%|%dicts]. Here is the suggestion, slightly modified to be more general: ====== proc pushmru {name limit args} { upvar $name dict foreach key $args { dict unset dict $key dict set dict $key {} while {[dict size $dict] > $limit} { dict unset dict [lindex [dict keys $dict] 0] } } return $dict } ====== '''Example''' ====== set i 0 while {[incr i] < 20} { pushmru cache 4 key$i } ====== <> algorithms | dict