Just to be clear make-instance is a macro on struct:
(defmacro make-instance
  "Takes a defclassed struct-basis and creates a struct. Initializes
  properties to default values."
  [aclass & initializers]
  (let [class-key      (eval (make-pair aclass))
        class-sym      (symbol (name aclass))
        class-inits      (get-all-initializers-for-class class-key)
        layout            (rest (class-key @*layouts*))
        layout-map     (zipmap (reverse layout) (replicate (count layout)
nil))
        rinitializers     (vals (merge layout-map class-inits (apply
hash-map initializers)))]
    `(struct ~class-sym ~class-key ~...@rinitializers)))

make-instance and struct are equivalent. make-instance just follows the
principle that the programmer should haven't to do anything a computer can
do for you (I'm still a macro noob, let me know if I'm doing anything
particularly nonsensical here).

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to