Я хочу использовать переходные процессы для создания большой структуры данных. Вот код, без переходных процессов:создание структуры временных данных с использованием `repeat`
(into [] (repeat 10 :a))
;; => [:a :a :a :a :a :a :a :a :a :a]
Моя наивная попытка была бы это:
(persistent! (into (transient []) (repeat 10 :a)))
Я получаю сообщение об ошибке только с этим:
(into (transient []) (repeat 10 :a))
;; => ClassCastException clojure.lang.PersistentVector$TransientVector cannot be cast to clojure.lang.IPersistentCollection clojure.core/conj--6410 (core.clj:82)
Это неправильно, чтобы быть пытаясь использовать repeat
? (Нет такой функции repeat!
). Что лучше?
«Я хочу использовать переходные процессы для создания большой структуры данных», пожалуйста, объясните, почему/что вы на самом деле пытаетесь сделать, и каковы ваши ожидания? – birdspider
Мой день 6 для появления кода 2015 медленный. Поэтому стараюсь ускорить это. Сначала подумайте о вызове 'mk-state'. Смотрите: https://github.com/chrismurrph/advent-of-code/blob/master/dev/advent_2015/day06.clj –
'in' уже использует переходные процессы внутри, поэтому, даже если вы сделали это вручную, вы бы не получили никаких ускорив. Сначала вы должны измерить свое узкое место! – ClojureMostly