KC
Size: a a a
KC
OS
reset!
(defn timed-atom [x timeout-ms]
(let [state (atom nil)
reset (fn [newval]
(some-> state deref :promise (deliver :stop))
(let [p (-> state (reset! {:value newval :promise (promise)}) :promise)]
(future
(if (= :timeout (deref p timeout-ms :timeout))
(reset! state nil))))
newval)]
(if (some? x) (reset x))
(reify
IDeref (deref [_] (-> state deref :value))
IAtom (reset [_ x] (reset x)))))
AR
reset!
(defn timed-atom [x timeout-ms]
(let [state (atom nil)
reset (fn [newval]
(some-> state deref :promise (deliver :stop))
(let [p (-> state (reset! {:value newval :promise (promise)}) :promise)]
(future
(if (= :timeout (deref p timeout-ms :timeout))
(reset! state nil))))
newval)]
(if (some? x) (reset x))
(reify
IDeref (deref [_] (-> state deref :value))
IAtom (reset [_ x] (reset x)))))
AR
AR
OS
OS
MK
AR
AR
AD
AD
ST
AG
AD
ST
AC
AD