Having:
(def x (promise))
How can I check the the type of x is a promise?
Thanks
I'd say you can't generally. Because promise is created as reify of several interfaces: IDeref, IBlockingDeref, IPending, IFn. But you can check whether value implements one of them: clojure.lang.IPending.
(defn promise? [v]
(instance? clojure.lang.IPending p))
Or maybe even all:
(defn promise? [v]
(every? #(instance? % v)
[clojure.lang.IPending
clojure.lang.IFn
clojure.lang.IBlockingDeref
clojure.lang.IDeref]))
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