gpt4 book ai didi

clojure - Clojure 中的 `ISeqable` 是什么以及它与 `ISeq` 有什么关系 (`clojure.lang.ISeq` )

转载 作者:行者123 更新时间:2023-12-04 17:33:37 25 4
gpt4 key购买 nike

Joy of Clojure,第 2 版,第 217 页,我们读到:

You may have noticed that we've been using our own function xseq throughout the examples in this section, instead of Clojure's seq. This shouldn't be necessary, because Clojure provides an ISeqable interface that its seq function can use - all you need to do is to have your own type implement ISeqable.

文本然后继续声明一个类型协议(protocol)——实现一个ISeq,更准确地说

(deftype InfiniteConstant [i]
clojure.lang.ISeq
(seq [this]
(lazy-seq (cons i (seq this)))))

除了误用 Java 级别的概念“接口(interface)”一词,而不是 Clojure 级别的概念“协议(protocol)”,ISeqable 一个真实的概念还是在编辑过程中未更正的东西?

索引只为那个页面列出“ISeqable 接口(interface)”,为另一个页面列出“ISeq 接口(interface)”。

最佳答案

在Clojure实现中(Java写的),接口(interface)是Seqable,表示可以提供ISeq(也是Java接口(interface))的类型。

在 ClojureScript 中(在协议(protocol)被添加到 Clojure 之后出现),大多数核心接口(interface)都是作为协议(protocol)实现的,比如 ISeqable。

关于clojure - Clojure 中的 `ISeqable` 是什么以及它与 `ISeq` 有什么关系 (`clojure.lang.ISeq` ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57627703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com