In Clojure, some tasks (such as instantiating a PersistentQueue
or using deftype
to implement a custom data type that is compatible with the clojure.core
functions) require knowledge of the classes and/or interfaces in clojure.lang
.
However, according to clojure.lang/package.html
:
The only class considered part of the public API is
clojure.lang.IFn
. All other classes should be considered implementation details.
Are these statements incorrect or outdated? If so, are there plans to correct them in the future? If not, is there a more preferred way to perform the tasks mentioned above, or should they simply not be done at all in idiomatic Clojure code?