Есть ли функция Clojure для порядковых индикаторов?

Я хочу функцию, которая будет заполнять содержимое этой карты:

{:1 "first" :2 "second" :3 "third" :4 "fourth" ... :100 "one-hundredth" ...}

Так что я могу сделать что-то похожее на

(println "This is the " (:3 {... :3 "third" ...}) " item in the sequence")
> This is the third item in the sequence

Существует ли библиотека Clojure, которая делает это?

Мой вопрос: есть ли функция Clojure для порядковых индикаторов?

(Если есть лучший способ описать такую ​​функцию - пожалуйста, дайте мне знать)

1 ответ

Решение
user=> (require '[clojure.pprint :as pprint])
nil
user=> (map #(pprint/cl-format nil "~:R" %) [1 2 3 4 100])
("first" "second" "third" "fourth" "one hundredth")

Обратите внимание, что :1 не является 1, а также : не синтаксис для ключей карты

user=> (pprint/pprint (into {} (map (fn [n] [n (pprint/cl-format nil "~:R" n)]) (range 20))))
{0 "zeroth",
 7 "seventh",
 1 "first",
 4 "fourth",
 15 "fifteenth",
 13 "thirteenth",
 6 "sixth",
 17 "seventeenth",
 3 "third",
 12 "twelfth",
 2 "second",
 19 "nineteenth",
 11 "eleventh",
 9 "ninth",
 5 "fifth",
 14 "fourteenth",
 16 "sixteenth",
 10 "tenth",
 18 "eighteenth",
 8 "eighth"}
nil
Другие вопросы по тегам