Я плохой cacher: Иногда, когда никто не смотрит, я буду кэшировать результаты, не включая полный контекст:
f[x_]:=f[x]=x+a;
a=2; f[1];
DownValues[f]
Out[2]= {HoldPattern[f[1]]:>3,HoldPattern[f[x_]]:>(f[x]=x+a)}
Это приводит к ужасно тонким ошибкам и, что более важно, необходимости очистки кеша при изменении контекста. Один из способов очистки кеша - полностью Clear
символ и повторить определения, но это не совсем решение.
Мне бы очень понравился метод очистки всех без шаблонов DownValues, связанных с символом.
Для ясности, я буду включать мое настоящее решение в качестве ответа, но если сбой по двум пунктам
- Он только очищает DownValues с помощью числовых аргументов
- По эстетическим причинам я хотел бы избежать использования
Block
, чтобы захватить DownValues.
Любые идеи о том, как улучшить ClearCache
?