像“clojure.lang.PersistentVector$ChunkedSeq”这样的类型在clojure中是什么意思?

zhx*_*n17 0 clojure

在 clojure REPL 中,当我输入

(type (seq [0 1 2 3]))
Run Code Online (Sandbox Code Playgroud)

并评估它,我得到了“clojure.lang.PersistentVector$ChunkedSeq”,但“clojure.lang.PersistentVector”本身是clojure中的一个类。为什么有“$ChunkedSeq”,符号“$”是什么意思?

谢谢!

Die*_*sch 5

$ 表示这ChunkedSeq是在PersistentVector 中定义的类。至于什么是分块序列,请参阅四年前的这篇博文,当时 Clojure 1.1 出现:

Clojure 序列函数是惰性的,但是随着 Clojure 1.1 的发布,这种惰性的粒度从一次 1 次更改为一次块模型。换句话说,不是一次一个节点“遍历”一个序列,分块序列提供了一个“窗口”,在 32 个元素宽的序列上查看。