Предварительно агрегированная структура данных в clojure

В OLAP-кубах можно выполнять очень быстрый поиск в больших объемах агрегированных данных. Основная причина это то, что данные предварительно агрегируются в операции, которые легко комбинировать вверх (в основном +, -, среднее, стандартное, максимальное, минимальное и некоторые другие)

Как получить такое «антиленивое» поведение в clojure?

Я думаю о чем-то вроде

(def world-population {:africa 4e8            ;;this is an aggregation!
                       :africa/liberia 3.4e6
                       :africa/ethiopia 7.4e7
                       ...})

Как обновить подобную структуру данных и убедиться, что родители объекта также обновлены? Нужно ли сворачивать собственную реализацию ref?

6
задан claj 12 March 2012 в 15:43
поделиться