-- ../m2/methods.m2:456-458 cacheValue = key -> f -> x -> ( c := try x.cache else x.cache = new CacheTable; if c#?key then c#key else c#key = f x) | symbol class value location of symbol | ------ ----- ----- ------------------ | f : FunctionClosure -- ... ../m2/methods.m2:456:20-456:20 | key : Symbol -- inverse ../m2/methods.m2:456:13-456:13 | -- function f: | -- ../m2/matrix1.m2:660 | inverse Matrix := (cacheValue symbol inverse) ( m -> id_(target m) // m )