Визуализация дерева комментариев с ромом
(def posts (atom [{:id 77
:contents "Seventy seven is the nicest number below one hundred"
:author "nonforum@nonforum.com"
:comments [ 33 44 55]}
{:id 33
:contents "Thirty three is awesome."
:author "monforum@nonforum.com"
:comments [34 35]}]))
Скажем, у меня есть атом, который содержит сообщения, как выше Я хотел бы динамически отображать отступ родительского> дочернего списка, который отображает комментарии.
Учитывая пост: id, например 77, как я могу отобразить пост и все его комментарии в хорошем дереве с отступами?
(filter #(= 33 (:id %)) @posts)
Вернусь ({:id 33, :contents "Thirty three is awesome.", :author "monforum@nonforum.com", :comments [34 35]})
Тогда я могу получить вложенные идентификаторы комментариев...
(:comments (first (filter #(= 33 (:id %)) @posts)))
возвращается [34 35]
Итак, теперь, когда я знаю, что идентификаторы комментариев 34 и 35 комментариев являются частью набора комментариев, как я могу вернуться, чтобы получить исчерпывающую коллекцию дочерних комментариев?
Моя наивная идея состоит в том, чтобы создать очередь, добавить элементы в очередь, а затем извлечь их из структуры данных [атом], но должен быть более чистый, функциональный способ получить то, что я хочу из этого.