io.randomseed.lazy-map

Main namespace, contains utility functions, type definitions, and lazy map functions.

Public API is ->LazyMap, ->?LazyMap, lazy-map, force-map, freeze-map, lazy-map-dispatch.

->?LazyMap

(->?LazyMap map)

Behaves the same as ->LazyMap, except that if m is already a lazy map, returns it directly. This prevents the creation of a lazy map wrapping another lazy map, which (while not terribly wrong) is not the best idea.

force-map

(force-map map)

Realizes all the values in a lazy map, returning a regular map.

freeze-map

(freeze-map val map)

Replace all the unrealized values in a lazy map with placeholders, returning a regular map. No matter what is done to the returned map, the values in the original map will not be forced. v can be an object to use for all the values or a function of the key.

is-not-thrown?

macro

(is-not-thrown? e expr)

Used in clojure.test assertions because (is (not (thrown? …))) doesn’t work. See http://acidwords.com/posts/2015-07-23-fixing-negation-in-clojure-test.html

lazy-map

macro

(lazy-map map)

Constructs a lazy map from a literal map. None of the values are evaluated until they are accessed from the map.

lazy-map-dispatch

(lazy-map-dispatch obj)

This is a dispatch function for clojure.pprint that prints lazy maps without forcing them.

lazy-map-entry

(lazy-map-entry k v)

Construct a lazy map entry with the given key and value. If you want to take advantage of the laziness, the value should be a delay.

map-entry

(map-entry k v)

Creates a map entry (as returned by calling seq on a map) with the given key and value.

map-keys

(map-keys f map)

Applies f to each of the keys of a map, returning a new map.

map-vals

(map-vals f map)

Applies f to each of the values of a map, returning a new map.