У меня есть две структуры данных:
(def epics {"ARP-37" 8.0, "ARP-24" 5.0, "ARP-22" 13.0, "ARP-6" 21.0, "ARP-1" 8.0})
(def releases '(["Release one" '("ARP-37" "ARP-22" "ARP-6")]))
; gets the sum of a list of epics (maps epic keys to its corresponding story points)
(defn get-max-sp [epic-list] (reduce + (map #(get epics %) epic-list)))
(def initial-sp (get-max-sp '("ARP-37" "ARP-22" "ARP-6")))
Некоторые могут признать это данными JIRA. Однако я хочу объединить эти две структуры, чтобы они выглядели так:
; where (now) is a function from clj-time returning the current date
(def result [{x: (now), y: initial-sp }
{x: (+ now (get epics "ARP-37")), y: (- initial-sp (get epics "ARP-37))}
{x: (+ now (get epics "ARP-37") (get epics "ARP-22")),
y: (- initial-sp (get epics "ARP-37") (get epics "ARP-22"))}
{x: (+ now (get epics "ARP-37") (get epics "ARP-22")
(get epics "ARP-6")),
y: (- initial-sp (get epics "ARP-37") (get epics "ARP-22")
(get epics "ARP-6") )}
])
Итак, после выполнения функций я хочу, чтобы результат выглядел так:
[{x: 2014-02-18, y: 42}
{x: 2014-02-26, y: 34}
{x: 2014-03-11, y: 21}
{x: 2014-04-01, y: 0}
]
У меня возникли проблемы с объединением и сопоставлением двух структур, чтобы получить мой результат, и я хотел бы получить несколько советов о том, как подойти к этой проблеме в clojure :-)
Спасибо, Свен
Обновление: поскольку неясно, какими должны быть x и y, я попытаюсь объяснить их немного подробнее. Предполагается, что x — это дата с начальным значением сегодняшнего дня, и на каждом шаге итерации к ней будет добавляться сторипойнт эпоса «ARP-37» — это эпос, а 8.0 — его сторипойнт. y чем-то похож, поскольку он начинается с некоторых из всех сюжетных точек эпического списка, а затем на каждом шаге итерации уменьшается количество сюжетных точек своего эпоса. Итерация будет по списку эпиков.