2011-01-03 14 views
5

Estoy tratando de entender cómo funcionan las jerarquías de Clojure, con deriva y is-a? construcciones. No estoy seguro de cómo los usaría con los mapas y registros en mi programa. Alguien ha usado estos?¿Cómo usar las jerarquías de clojure?

Respuesta

5

Encuentro su pregunta un poco vaga. ¿Has leído la documentación en el sitio web de Clojure?

http://clojure.org/multimethods

puedo encontrar los ejemplos allí bastante fácil de seguir:

user=> ::rect 
:user/rect 
user=> (derive ::rect ::shape) 
nil 
user=> (parents ::rect) 
#{:user/shape} 
user=> (derive ::square ::rect) 
nil 
user=> (ancestors ::square) 
#{:user/shape :user/rect} 
user=> (isa? ::square ::shape) 
true 

Hay también esta entrada del blog con un "mundo real" ejemplo más:

http://www.prodevtips.com/2010/06/20/clojure-inheritance/

+0

Gracias , información útil, así que si entiendo correctamente si tengo un registro como (defrecord R []) y quiero ponerlo en un tipo hieracrhy, entonces necesito asociar tipos con él, como (def r (R.)) (assoc r: type :: type). ¿Es esto correcto? – Zubair

+0

Tbh, nunca he hecho algo como esto con los registros (lamentablemente no tuve tiempo de sumergirme realmente en Clojure 1.2), pero parece razonable. –

Cuestiones relacionadas