2010-01-12 24 views
19

Ayer, Rich arrastró la 'nueva' rama de Clojure al maestro. Ahora estamos abrazando la belleza que es deftyot y defprotocol. Por supuesto, yo, que vengo de Haskell, estoy muy tentado de definir tipos como lo haría en Haskell, que sería para prácticamente todo menos una tupla desechable, pero no creo que funcione así en el mundo Clojure;). En el hilo de Common Mistakes para Clojure, un chico mencionó que el uso excesivo de las estructuras fue un error que cometió cuando comenzó, proveniente de OOP. Dado que los deftypes parecen ser similares a las estructuras, me preguntaba si lo mismo se aplica allí.¿Cuándo debería usar deftype en Clojure?

Entonces, mi pregunta es: ¿cuándo es un buen momento para usar deftype?

Respuesta

13

Un área deftype brilla es el rendimiento. Los métodos de protocolos son muy rápidos en un deftype. También deftype puede tener campos primitivos, por lo que ya no hay boxeo cuando se cruzan números ...

Otra área podría ser la interoperación de Java, ya que deftype puede implementar interfaces (y si AOT compilado) tiene una clase con nombre.

En general, la idea básica es definir abstracciones con protocolos e implementarlas con deftype.

Rich Detalles su motivación aquí: http://www.assembla.com/wiki/show/clojure/Datatypes

+0

por lo que sería la clase de ser como Haskell, en la que los protocolos son como clases de tipos y tipos de datos son tipos de datos como ... bueno. :pag – Rayne

Cuestiones relacionadas