В ответ на (1) ваша функция get-cand
выглядит очень похожей по структуре с использованием из clojure.core/cache
. Вы можете посмотреть в кеши FIFO / LIFO / TTL, которые также могут быть просто обернуты в атом для обновления.
Что касается (2), хотя я не думаю, что это фактически считается «мутацией» (может быть, эксперт сможет уточнить), я считаю, что вполне разумно иметь большие кэшированные предварительные вычисления (в конце концов Таблица поиска [ 114] распространены, например, при обработке изображений, и они в основном являются предварительно гидратированными кешами).
Получить пользовательскую информацию формы от формы Visio:
Function GetCustomPropertyValue(TheShape As Visio.Shape, ThePropertyName As String) As String
On Error Resume Next
GetCustomPropertyValue = TheShape.CellsU("Prop." & ThePropertyName).ResultStr(visNone)
End Function
Вся эта функция делает использование cellsu свойство на форме для получения пользовательской ячейки свойства ShapeSheet по имени...
Если Вы - сторонник об использовании на ошибочном резюме затем, можно проверить, чтобы видеть, существует ли ячейка первой проверкой, если ячейка существует:
if TheShape.CellExistsU( "Prop." & ThePropertyName , 0 ) then
GetCustomPropertyValue = TheShape.CellsU("Prop." & THePropertyName).ResultStr(VisNone)