Utility functions to complement clojure.core
Utility functions to complement clojure.core
(coll-wrap x-or-xs)Wrap value in a vector if it is not sequential already Ex: (coll-wrap 2) ; => [2] (coll-wrap [1 2 3]) ; => [1 2 3]
Wrap value in a vector if it is not sequential already Ex: (coll-wrap 2) ; => [2] (coll-wrap [1 2 3]) ; => [1 2 3]
(find pred coll)Return the first value of x in coll that is logically true for (pred x) Similar to clojure.core/some, but returns the item itself.
Ex: (find even? [1 1 1 3 4 5 6]) ; => 4
Return the first value of x in coll that is logically true for (pred x) Similar to clojure.core/some, but returns the item itself. Ex: (find even? [1 1 1 3 4 5 6]) ; => 4
(flip f)(flip f y x)Takes two arguments in the reverse order of f ('flips' a function of two arguments) If supplied a function with no args, returns a new function accepting the reversed args
Ex: (flip dissoc :foo {:foo 1 :bar 2}) ; => {:bar 2}
(def flipped-dissoc (flip dissoc)) (flipped-dissoc :foo {:foo 1 :bar 2}) ; => {:bar 2}
Takes two arguments in the reverse order of f ('flips' a function
of two arguments)
If supplied a function with no args, returns a new function
accepting the reversed args
Ex:
(flip dissoc :foo {:foo 1 :bar 2})
; => {:bar 2}
(def flipped-dissoc (flip dissoc))
(flipped-dissoc :foo {:foo 1 :bar 2})
; => {:bar 2}(from-edn x)Attempt to parse x as EDN, or return nil on failure
Attempt to parse x as EDN, or return nil on failure
(future-loop & body)Execute body repeatedly within a future, returning the future
Execute body repeatedly within a future, returning the future
(map-from-keys & forms)Given symbols, e.g. (map-from-keys foo bar),
return a map with those names as keyword keys, and those values:
Ex: (map-from-keys foo bar) ; => {:foo foo :bar bar}
Given symbols, e.g. `(map-from-keys foo bar)`,
return a map with those names as keyword keys, and those values:
Ex:
(map-from-keys foo bar)
; => {:foo foo
:bar bar}(map-kv val-fn coll)(map-kv key-fn val-fn coll)Same as map-tup but returns results in a map
Same as `map-tup` but returns results in a map
(map-tup val-fn coll)(map-tup key-fn val-fn coll)For all k,v in coll, return a seq of [(key-fn k) (val-fn v)] tuples
Ex: (map-tup #(* 2 %) #(* 3 %) {1 2, 3 4, 5 6}) ; => ([2 6] [6 12] [10 18])
For all k,v in coll, return a seq of [(key-fn k) (val-fn v)] tuples
Ex:
(map-tup #(* 2 %) #(* 3 %) {1 2, 3 4, 5 6})
; => ([2 6] [6 12] [10 18])(mapcat f coll)Like clojure.core/mapcat over a single coll without object reachability memory issues. This is especially useful when large seqs are generated by f, but this is a general-purpose replacement for its clojure.core counterpart.
See http://clojurian.blogspot.com/2012/11/beware-of-mapcat.html http://stackoverflow.com/questions/21943577/mapcat-breaking-the-lazyness
Like clojure.core/mapcat over a single coll without object
reachability memory issues. This is especially useful when
large seqs are generated by f, but this is a general-purpose
replacement for its clojure.core counterpart.
See http://clojurian.blogspot.com/2012/11/beware-of-mapcat.html
http://stackoverflow.com/questions/21943577/mapcat-breaking-the-lazyness(rand-alphanumeric len)Generate a string of random letters/digits of a given length
Generate a string of random letters/digits of a given length
(rand-int-between min-val max-val)Generate a random int in the inclusive range of min-val to max-val
Generate a random int in the inclusive range of min-val to max-val
(shuffle rng coll)Same as clojure.core/shuffle but accepts source of randomness for deterministic testing
Same as clojure.core/shuffle but accepts source of randomness for deterministic testing
(to-edn x)pr-str x only if it is truthy, else return nil
pr-str x only if it is truthy, else return nil
(when-assoc coll k v)When v is truthy, assoc it into coll at k. Otherwise return coll
When v is truthy, assoc it into coll at k. Otherwise return coll
(when-assoc-in coll ks v)When v is truthy, assoc it into coll at ks. Otherwise return coll
When v is truthy, assoc it into coll at ks. Otherwise return coll
(zip & colls)Zip corresponding elements from two or more colls together Ex: (zip [1 2] [3 4]) ; => [[1 3] [2 4]]
Zip corresponding elements from two or more colls together Ex: (zip [1 2] [3 4]) ; => [[1 3] [2 4]]
(zipmap-seq key-fn val-fn coll)Given a collection coll, return a map where for all k in coll,
key of entry is (f k) and value of entry is (g k)
Ex: (zipmap-seq #(* 2 %) (* 3 %) [1 2 3]) ;=> {2 3, 4 6, 6 9}
Given a collection `coll`, return a map where for all k in coll,
key of entry is (f k) and value of entry is (g k)
Ex:
(zipmap-seq #(* 2 %) (* 3 %) [1 2 3])
;=> {2 3, 4 6, 6 9}cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |