Как повторить список элементов из вектора в икоте?

Если у меня есть имя вектора как ["Джон" "Мэри" "Ватсон" "Джеймс"],

и я хочу отобразить их как элементы списка, как мне это сделать с помощью икоты?

что-то типа

[:ul 
  (for [name name-list]
    [:li name])]

вернет список [:li ] между [:ul ] вместо простого повторения. Должно быть что-то лучше. Я относительно новичок в икоте, я искал, но ничего не нашел.


person Amogh Talpallikar    schedule 05.02.2014    source источник


Ответы (1)


Как только вы передадите структуру данных Hiccup, вы должны получить ожидаемый результат:

(require '[hiccup.core :refer [html]])

(def names
  ["John" "Mary" "Watson" "James"])

(html [:ul 
       (for [name names]
         [:li name])])
;=> "<ul><li>John</li><li>Mary</li><li>Watson</li><li>James</li></ul>"
person ponzao    schedule 05.02.2014
comment
но for вернет список: ([:li John] [:li Mary] [:li Watson] [:li James]) будет ли работать преобразование html? - person Amogh Talpallikar; 05.02.2014
comment
Я старался. оно работает. hiccup — самый компактный DSL для clojure, который я когда-либо видел :) - person Amogh Talpallikar; 05.02.2014