Clojure 允许deftype不完全实现接口的 s,例如
(deftype Foo [x] clojure.lang.ISeq (next [this] x))
(Foo不实施seq)。来自 Pythonic 的鸭子类型,或者充其量(或最坏的情况,取决于你的 POV),ABC,我很难理解为什么允许这种不完整的实现,因为我认为接口的目的是保证存在一组方法(现在看来,为了deftype安全地使用其他人的 s,我必须将每个“方法”调用包装在 a 中try...catch)。