Что такие типы, как "clojure.lang.PersistentVector$ChunkedSeq" означают в clojure?
В словах REPL, когда я печатаю
(type (seq [0 1 2 3]))
и оценить его, я получил "clojure.lang.PersistentVector$ChunkedSeq", но "clojure.lang.PersistentVector" сам по себе является классом в clojure. Почему с ним есть "$ChunkedSeq" и что означает нотация "$"?
Спасибо!
1 ответ
$ Означает, что ChunkedSeq
класс, определенный внутри PersistentVector. О том, что такое chqked seq, смотрите в этом блоге четыре года назад, когда вышла Clojure 1.1:
Функции последовательности Clojure являются ленивыми, однако с выпуском Clojure 1.1 гранулярность этой лени была изменена с модели "один за один раз" на модель "кусок за один раз". Другими словами, вместо того, чтобы "проходить" последовательность по одному узлу за раз, фрагментированные последовательности обеспечивают "оконный" просмотр для последовательностей шириной 32 элемента.