The Emacs Lisp environment supports weak references, but only for hash table keys and values. This can be exploited to generalize weak references into two convenient macros: * `weak-ref' : create a weak reference to an object * `weak-ref-deref' : access the object behind a weak reference The weakness can be demonstrated like so: (setq ref (weak-ref (list 1 2 3))) (weak-ref-deref ref) ; => (1 2 3) (garbage-collect) (weak-ref-deref ref) ; => nil See also: https://github.com/melpa/melpa/pull/6670