(def ^{:private true} buckets {"day" [.getYear .getMonthOfYear .getDayOfMonth] "week" [.getYear .getWeekOfWeekyear] "month" [.getYear .getMonthOfYear]}) (defn days [granularity] (fn [event] (let [dt (get-time event) bucket (buckets granularity)] (apply juxt (map memfn bucket)))))