Clojure peek没有';我不支持某些序列
我在对seq对象使用Clojure peek没有';我不支持某些序列,clojure,Clojure,我在对seq对象使用peek函数时遇到错误。这对我来说有点令人惊讶,因为我希望peek可以处理任何seq对象 (def r0 (re-seq #"\w+" "foo bar")) (identity r0) ;; ("foo" "bar") (peek r0) ; (err) Execution error (ClassCastException) at (REPL:1). (peek '("fo
peek
函数时遇到错误。这对我来说有点令人惊讶,因为我希望peek
可以处理任何seq对象
(def r0
(re-seq #"\w+" "foo bar"))
(identity r0)
;; ("foo" "bar")
(peek r0)
; (err) Execution error (ClassCastException) at (REPL:1).
(peek '("foo" "bar"))
;; "foo"
(= r0 '("foo" "bar"))
;; true
(type r0)
;; clojure.lang.Cons
(type '("foo"))
;; clojure.lang.PersistentList
表示
peek
接受一个集合对象。但是序列也是集合,对吗?但是peek
不支持它。那么,这是一个文档错误吗?还是我遗漏了什么?peek
与“持久类型实现clojure.lang.IPersistentStack
(比如clojure.lang.persistent*
)”一起工作,tomby42在8.2年前的文档说明中说。peek
与“实现clojure.lang.IPersistentStack
(如clojure.lang.persistent*
)”的持久类型,根据tomby42,8.2年前的文档说明。clojure 1.10.1中的函数peek
的clojure文档字符串(截至本文撰写之时)是:“对于列表或队列,与第一个相同,对于向量,与,但是很多
比去年更有效率。如果集合为空,则返回nil。“
在一些关于peek关于Clojurians Slack的文档的讨论中,peek文档字符串中的“collection”一词可能指的是前面提到的列表、队列或向量的集合类型之一,而不是任意Clojure集合。也就是说,它的解释应该与“collection”一词相同“替换为短语“列表、队列或向量”。Clojure在Clojure 1.10.1中的函数
peek
的文档字符串是:“对于列表或队列,与第一个相同,对于向量,与相同,但更多
比,last更有效。如果集合为空,则返回nil。“
在一些关于peek关于Clojurians Slack的文档的讨论中,peek文档字符串中的“collection”一词可能指的是前面提到的列表、队列或向量的集合类型之一,而不是任意Clojure集合。也就是说,应该将其解释为“集合”一词替换为短语“列表、队列或向量”。文档中提到的是列表、队列或向量,而不是一般的集合。Peek适用于堆栈式集合(
IPersistentStack
)。TIL使用Peek
而不是last
来处理向量。在阅读有关集合和序列的文档时,我看到映射向量列表和集合是集合。我希望peek能够处理所有集合,但是peek似乎需要一个IPersistentStack。文档中提到的是列表、队列或向量,而不是一般的集合。Peek适用于堆栈式集合(IPersistentStack
)。TIL使用Peek
而不是last
来处理向量。在阅读有关集合和序列的文档时,我看到映射向量列表和集合是集合。我希望peek能够处理所有的集合,但是peek似乎需要一个IPersistentStack。