From https://github.com/tonsky/datascriptПочему этот совокупность данных для регистрации данных?
(->
(d/q '[:find ?color (max ?amount ?x) (min ?amount ?x)
:in [[?color ?x]] ?amount]
[[:red 10] [:red 20] [:red 30] [:red 40] [:red 50]
[:blue 7] [:blue 8]]
4)
pr-str
js/console.log)
;;; ([:red [20 30 40 50] [10 20 30 40]] [:blue [7 8] [7 8]])
(->
(d/q '[:find ?color (max ?amount ?x) (min ?amount ?x)
:in [[?color ?x]] ?amount]
[[:red 10] [:red 20] [:red 30] [:red 40] [:red 50]
[:blue 7] [:blue 8]]
3)
pr-str
js/console.log)
;;; ([:red [30 40 50] [10 20 30]] [:blue [7 8] [7 8]])
(->
(d/q '[:find ?color (max ?amount ?x) (min ?amount ?x)
:in [[?color ?x]] ?amount]
[[:red 10] [:red 20] [:red 30] [:red 40] [:red 50]
[:blue 7] [:blue 8]]
2)
pr-str
js/console.log)
;;; ([:red [40 50] [10 20]] [:blue [7 8] [7 8]])
Таким образом, это не вопрос о том, что он делает, это вопрос о том, как (или, по крайней мере, почему) он делает это. max и min - это функции, которые возвращают максимум или минимум своих следующих целых чисел соответственно. Как ?amount
получать факторизуемое ограничение количества агрегатов? Почему все это агрегируется? Как выполняется код, который он агрегирует. Я действительно не вижу, как этот код течет, чтобы генерировать результаты, которые он делает.
, чтобы уточнить: (max N coll) - это верхние N значений coll. То же самое для min, это N наименьшее из coll. –