Type class which represents a tagged dictionary

Tagged dictionaries are used to represent complex Julia types. Using a struct instead of an actual Dictionary requires less memory allocation and allows us to use multiple dispatch on the resulting tree structure.

It inherits abstract dict just for show.


Cache the result of a calculation for a given input


Cache the input parameter to calculation as its output

Assumes the object is changed inplace. Allows objects to reference themselves.