У меня есть такой бесконечный список:
((1 1)(3 9)(5 17)...)
Я хотел бы сделать из него хеш-карту:
{:1 1 :3 9 :5 17 ...)
В основном 1-й элемент "внутреннего" списка будет ключевым словом, а второй элемент - значением. Я не уверен, что было бы проще сделать это во время создания, чтобы создать список, который я использую:
(итерация (fn [[a b]] [(вычисление для a) (вычисление для b)]) [1 1])
Вычисление (b) требует (a), поэтому я считаю, что на данный момент (a) не может быть ключевым словом... Весь смысл в том, чтобы можно было легко получить доступ к значению (b), заданному (a).
Благодарим за любую идею...
--EDIT--
Итак, я понял это:
(def my-map (into {} (map #(hash-map (keyword (str (first %))) (first (rest %))) my-list)))
Проблема в том, что он не кажется ленивым... он просто уходит навсегда, хотя я его и не употреблял. Есть ли способ заставить его быть ленивым?
delay
иderef
(@
). - person tnoda   schedule 09.04.2013