isa?

added
1.0

ns
clojure.core

type
function

(isa? child parent) (isa? h child parent)

Returns true if (= child parent), or child is directly or indirectly derived from
parent, either via a Java type inheritance relationship or a
relationship established via derive. h must be a hierarchy obtained
from make-hierarchy, if not supplied defaults to the global
hierarchy

                user=> (import 'java.util.PriorityQueue)
java.util.PriorityQueue

user=> (bases PriorityQueue)
(java.util.AbstractQueue java.io.Serializable)

user=> (import 'java.util.AbstractQueue)
java.util.AbstractQueue

user=> (isa? PriorityQueue AbstractQueue)
true

user=> (bases AbstractQueue)
(java.util.AbstractCollection java.util.Queue)

user=> (isa? PriorityQueue java.util.AbstractCollection)
true

user=> (isa? PriorityQueue java.util.Queue)
true

user=> (isa? java.util.PriorityQueue java.util.TreeMap)
false
            
                user=> (derive ::Feline ::Animal)
nil
user=> (derive ::Cat ::Feline)
nil

user=> (derive ::Lion ::Feline)
nil

user=> (isa? ::Lion ::Feline)
true

user=> (isa? ::Lion ::Animal)
true

user=> (isa? ::Tuna ::Feline)
false