Provide a cache management facility for the values of the expressions used in the previous exercise and measure the effect of the cache on the evaluation time of some expressions. Hint: a cache is useful when the same expressions are repeatedly evaluated. If every expression is evaluated only once, using a cache would actually slow down the execution.