首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CLOS for Clojure?

CLOS for Clojure?
EN

Stack Overflow用户
提问于 2010-10-29 03:09:47
回答 7查看 4.9K关注 0票数 24

Clojure有没有像CLOS (Common Lisp Object System)这样的东西?

EN

回答 7

Stack Overflow用户

发布于 2010-10-29 03:52:10

你有没有考虑过Clojure的data types (特别是defrecord)、protocolsmultimethods?这三种方法在Clojure中总是比在这些机制之上的CLOS端口更惯用。

票数 19
EN

Stack Overflow用户

发布于 2010-10-29 04:48:21

Clojure本身没有对象系统,原因有两个:

  1. Clojure专门设计为托管在面向对象的平台上,然后它简单地吸收底层平台的对象系统。例如,ClojureJVM有JVM对象系统,ClojureCLR有CLI对象系统,ClojureScript有ECMAScript对象系统,等等。
  2. Rich Hickey讨厌对象。

但是,您显然可以在Clojure中实现对象系统。毕竟,Clojure是图灵完备的。

Mikel Evins正在研究一种新的OO方法,他称之为。他有几个Lisp的实现,包括Clojure (尽管不是所有的端口都保证总是最新的)。

类别正在慢慢地被Bard所包含,这是Mikel正在设计的一种新的Lisp方言,它具有内置的类别。(然后,反过来,它可能成为Closos的实现语言,这是米克尔关于如何设计操作系统的想法。)

票数 17
EN

Stack Overflow用户

发布于 2010-10-29 04:01:53

Clojure没有CLOS,也不想要CLOS,但您可以实现它。

Clojure希望是不可变的,所以拥有可变的OO将是一种愚蠢的想法,但你可以拥有一种OO。

  • http://clojure.org/datatypes (查看defrecord -->最好的类和hash-maps)
  • http://clojure.org/protocols (有点像接口,但better)
  • http://clojure.org/multimethods很强大,因为您可以编写自己的分派函数)

有了这三件事,您应该能够满足所有需求,但大多数时候,最好只使用普通函数和标准数据结构。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4046360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档