Zub*_*air 6 lisp clojure common-lisp
我最近一直在使用Clojure的类型和记录,我想知道这些是非常新的概念,还是受到Common Lisp对象系统的启发?
mik*_*era 12
我相信它们在Clojure中几乎是新的创新.
CLOS是一个相当复杂,功能齐全的面向对象系统.它具有您经常听到的各种OOP技术,并且存在于其他面向对象的语言中 - 多重继承,动态调度,泛型函数等.
Clojure采用了不同的方法 - 类型和记录比完整的OOP简单得多,并不打算构成一个完整的OOP系统.相反,我理解设计的动机是:
如果你想要一个像CLOS这样的传统面向对象系统,那么就可以在Clojure中在类型和记录之上构建它.您还可以直接在Clojure中使用Java风格的面向对象.但是我相信Clojure专家通常不会推荐它--Clojure通常会为您提供不同或更好的方法来解决相同的问题.
一般来说 - Clojure倾向于为您提供"简单"工具,您可以编写这些工具来解决手头的问题,而不是在任何时候规定复杂的框架.这是一个在这个视频由Stuart哈洛韦在一定程度上讨论有趣的理念.