I would like to do something like:
(defrecord Base [])
(defrecord Person [])
(defrecord Animal [])
(derive Person Base)
(derive Animal Base)
(isa? Animal Person)
Is this possible?
I've since realized that this is not possible so I am doing something like this:
(defmulti type class)
(defmethod type Base [_] ::base )
(defmethod type Animal [_] ::animal )
(defmethod type Person [_] ::person )
Does this make sense or is there a better way?
No. Records are Java classes. As the multimethods page states:
You can also use a class as the child (but not the parent, the only way to make something the child of a class is via Java inheritance).
You can't extend classes with records but you can implement interfaces. Using interfaces to play in the Java class hierarchy, you might be able to make something work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With