Back
deref (clj)
(source)function
(deref ref)
(deref ref timeout-ms timeout-val)
Also reader macro: @ref/@agent/@var/@atom/@delay/@future/@promise. Within a transaction,
returns the in-transaction-value of ref, else returns the
most-recently-committed value of ref. When applied to a var, agent
or atom, returns its current state. When applied to a delay, forces
it if not already forced. When applied to a future, will block if
computation not complete. When applied to a promise, will block
until a value is delivered. The variant taking a timeout can be
used for blocking references (futures and promises), and will return
timeout-val if the timeout (in milliseconds) is reached before a
value is available. See also - realized?.
Examples
clojure/core.typed
(ns ^:skip-wiki clojure.core.typed.ann.clojure
"Type annotations for the base Clojure distribution."
(:require [#?(:clj clojure.core.typed
:cljs cljs.core.typed)
:refer [defalias] :as t]))
(defalias
^{:doc "A Clojure derefable (see clojure.core/deref)."
:forms '[(Deref t)]}
t/Deref
(t/TFn [[x :variance :covariant]]
(clojure.lang.IDeref x)))
(defalias
^{:doc "A Clojure blocking derefable (see clojure.core/deref)."
:forms '[(BlockingDeref t)]}
t/BlockingDeref
(t/TFn [[x :variance :covariant]]
(clojure.lang.IBlockingDeref x)))
(t/rclass-preds
; clojure.lang.Seqable
; {:pred (fn [this a?]
; (cond
; (string? this) (every? a? this)
; (coll? this) (every? a? this)))}
clojure.lang.IPersistentCollection
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.ISeq
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.IPersistentSet
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.APersistentSet
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.PersistentHashSet
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.PersistentTreeSet
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.Associative
{:args #{2}
:pred (fn [this a? b?]
`(cond
(vector? ~this) (and (every? ~a? (range (count ~this)))
(every? ~b? ~this))
(map? ~this) (and (every? ~a? (keys ~this))
(every? ~b? (vals ~this)))))}
clojure.lang.IPersistentStack
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.IPersistentVector
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.APersistentVector
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.PersistentVector
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.IMapEntry
{:args #{2}
:pred (fn [this a? b?]
`(and (~a? (key ~this)) (~b? (val ~this))))}
clojure.lang.AMapEntry
{:args #{2}
:pred (fn [this a? b?]
`(and (~a? (key ~this)) (~b? (val ~this))))}
clojure.lang.MapEntry
{:args #{2}
:pred (fn [this a? b?]
`(and (~a? (key ~this)) (~b? (val ~this))))}
clojure.lang.IPersistentMap
{:args #{2}
:pred (fn [this a? b?]
`(and (every? ~a? (keys ~this))
(every? ~b? (vals ~this))))}
clojure.lang.ASeq
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.APersistentMap
{:args #{2}
:pred (fn [this a? b?]
`(and (every? ~a? (keys ~this))
(every? ~b? (vals ~this))))}
clojure.lang.PersistentHashMap
{:args #{2}
:pred (fn [this a? b?]
`(and (every? ~a? (keys ~this))
(every? ~b? (vals ~this))))}
clojure.lang.Cons
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.IPersistentList
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.PersistentList
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.LazySeq
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.Reduced
{:args #{1}
:pred (fn [this a?]
`(~a? (deref ~this)))})
typedclojure/typedclojure
(ns ^:no-doc clojure.core.typed.import-macros
(:require [clojure.core :as core]))
;copied from ClojureScript
(defmacro import-macros [ns [& vars]]
(core/let [ns (find-ns ns)
vars (map (core/fn [vsym]
{:pre [(symbol? vsym)]
:post [(instance? clojure.lang.Var %)]}
(let [v (ns-resolve ns vsym)]
(assert v (str "Internal error: " vsym " does not exist"))
v))
vars)
syms (map (core/fn [^clojure.lang.Var v]
{:pre [(instance? clojure.lang.Var v)]
:post [(symbol? %)]}
(core/-> v .sym (with-meta {:macro true})))
vars)
defs (map (core/fn [sym var]
{:pre [(symbol? sym)
(instance? clojure.lang.Var var)]}
`(do (def ~sym (deref ~var))
;for AOT compilation
(alter-meta! (var ~sym)
merge
(dissoc (meta ~var) :ns :name)
{:macro true})))
syms vars)]
`(do ~@defs
:imported)))
typedclojure/typedclojure
(ns ^:no-doc typed.ann.clojure.jvm
"JVM-specific type annotations for the base Clojure distribution."
(:require [typed.clojure :as t]
[typed.clojure.jvm :refer [override-classes]]
clojure.core.typed)
(:import (clojure.lang Named IMapEntry AMapEntry Seqable
LazySeq PersistentHashSet PersistentTreeSet PersistentTreeMap PersistentList APersistentVector
APersistentSet IPersistentSet IPersistentMap IPersistentVector
APersistentMap IDeref ISeq IPersistentCollection
ILookup Indexed Associative IPersistentStack PersistentVector Cons
IPersistentList IRef ARef Reversible
ITransientCollection ITransientSet ITransientAssociative ITransientMap
ITransientVector PersistentHashMap Reduced MultiFn Sorted)
(java.util Collection RandomAccess)))
;; ==========================================
;; Predicate support for common JVM classes
(clojure.core.typed/rclass-preds
; clojure.lang.Seqable
; {:pred (fn [this a?]
; (cond
; (string? this) (every? a? this)
; (coll? this) (every? a? this)))}
clojure.lang.IPersistentCollection
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.ISeq
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.IPersistentSet
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.APersistentSet
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.PersistentHashSet
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.PersistentTreeSet
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.Associative
{:args #{2}
:pred (fn [this a? b?]
`(cond
(vector? ~this) (and (every? ~a? (range (count ~this)))
(every? ~b? ~this))
(map? ~this) (and (every? ~a? (keys ~this))
(every? ~b? (vals ~this)))))}
clojure.lang.IPersistentStack
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.IPersistentVector
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.APersistentVector
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.PersistentVector
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.IMapEntry
{:args #{2}
:pred (fn [this a? b?]
`(and (~a? (key ~this)) (~b? (val ~this))))}
clojure.lang.AMapEntry
{:args #{2}
:pred (fn [this a? b?]
`(and (~a? (key ~this)) (~b? (val ~this))))}
clojure.lang.MapEntry
{:args #{2}
:pred (fn [this a? b?]
`(and (~a? (key ~this)) (~b? (val ~this))))}
clojure.lang.IPersistentMap
{:args #{2}
:pred (fn [this a? b?]
`(and (every? ~a? (keys ~this))
(every? ~b? (vals ~this))))}
clojure.lang.ASeq
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.APersistentMap
{:args #{2}
:pred (fn [this a? b?]
`(and (every? ~a? (keys ~this))
(every? ~b? (vals ~this))))}
clojure.lang.PersistentHashMap
{:args #{2}
:pred (fn [this a? b?]
`(and (every? ~a? (keys ~this))
(every? ~b? (vals ~this))))}
clojure.lang.Cons
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.IPersistentList
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.PersistentList
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.LazySeq
{:args #{1}
:pred (fn [this a?]
`(every? ~a? ~this))}
clojure.lang.Reduced
{:args #{1}
:pred (fn [this a?]
`(~a? (deref ~this)))})
fluree/db
(ns json-ld.lists
(:require [fluree.db.method.ipfs.core :as ipfs]
[fluree.db.db.json-ld :as jld-db]
[fluree.db.json-ld.transact :as jld-tx]
[clojure.core.async :as async]
[fluree.db.flake :as flake]
[fluree.db.json-ld.api :as fluree]
[fluree.db.util.async :refer [<?? go-try channel?]]
[fluree.db.query.range :as query-range]
[fluree.db.constants :as const]
[fluree.db.dbproto :as dbproto]
[fluree.db.did :as did]
[fluree.db.conn.proto :as conn-proto]
[fluree.db.util.json :as json]
[fluree.json-ld :as json-ld]
[fluree.db.indexer.default :as indexer]
[fluree.db.indexer.proto :as idx-proto]
[fluree.db.util.log :as log]
[fluree.db.index :as index]))
(-> @(fluree/stage
ledger
{:context {:id "@id"
:ex "http://example.org/ns#"}
:id :ex/myRecord
:ex/note "Note query reorders list."
:ex/myList [42 2 88 1]})
(fluree/query {:context {:ex "http://example.org/ns#"}
:select [:*]
:from :ex/myRecord})
deref)
(-> @(fluree/stage
ledger
{:context {:id "@id"
:ex "http://example.org/ns#"
:ex/myList {"@container" "@list"}}
:id :ex/myRecord
:ex/note "Don't change my list! (using context)"
:ex/myList [42 2 88 1]})
(fluree/query {:context {:ex "http://example.org/ns#"}
:select [:*]
:from :ex/myRecord})
deref)
(-> @(fluree/stage
ledger
{:context {:id "@id"
:ex "http://example.org/ns#"}
:id :ex/myRecord
:ex/note "Don't change my list! (embedding directly)"
:ex/myList {"@list" [42 2 88 1]}})
(fluree/query {:context {:ex "http://example.org/ns#"}
:select [:*]
:from :ex/myRecord})
deref)
unclebob/more-speech
(ns more-speech.websocket-relay-spec
(:require [speclj.core :refer :all]
[clojure.core.async :as async]
[more-speech
[relay :as relay]
[websocket-relay :as ws-relay]]))
(it "can send and receive"
(pending "be nice to relay.damus.io")
(let [chan (async/chan)
recv-f (fn [relay msg] (async/>!! chan [relay msg]))
relay (ws-relay/make "wss://relay.damus.io" recv-f)
relay-open (relay/open relay)
_ (relay/send relay-open ["test"])
f-reply (future (async/<!! chan))
[relay-r reply] (deref f-reply 1000 :timeout)
_ (relay/close relay-open)]
(should= relay relay-r )
(should= ["NOTICE" "could not parse command"] reply)))
)