 
 - 'assoc' creates new associations between keys and values in a collection.
 - 'dissoc' drops association for keys in the collection.
-- 'get' looks up a value in a collection. 
+- 'get' looks up a value in a collection.
 - 'contains?' a predicate that returns whether a key is in the collection.
 
 The most used structure is the 'map'."

  (map val m)
  => '(3 2 1))






[[:section {:title "Immutability and Persistence --  page: 122"}]]

[[:subsection {:title "Persistence and Structural Sharing --  page: 123"}]]

[[:subsection {:title "Transients --  page: 130"}]]

[[:section {:title "Metadata --  page: 134"}]]

[[:section {:title "Putting Clojure’s Collections to Work --  page: 136"}]]

[[:subsection {:title "Identifiers and Cycles --  page: 137"}]]


  ;; => 10
  )

"
since 'cons' and 'list*' don't force realization of a values in s 'seq' these
 functions are key to building lazy sequences.

so build a sequence with concrete values 'consed' onto a lazy tail, that
suspends it's computation.
"
"
a simpler solution using composition of random-int and repeatedly:
