Skip to content

Maps and keywords

Theory: maps and keywordsλ︎

When a request is received by our application, it is converted from by Jetty to a servlet request. Ring then converts this to a Clojure map called request. All handlers in our application take a request map as an argument.

A map in Clojure contains one or more key / value pairs, you may be familiar with the term hash map. The keys in these maps are often defined using a Clojure keyword. A keyword is a symbol that points to itself and so therefore is unique within a specific scope. A keyword makes it very easy to get a value from a map and acts as a function on the map to return its associated value

So, assume we have defined a map called request. This map contains a key defined with the :uri keyword. We can get the value associated with the key using the keyword as a function

(def request {:uri "/"})

(:uri request)

;; As a map can also act as a function to get its elements, you can also use the following form to get the same value
(request :uri)

The function get is functions that helps us get data from maps. The function get-in helps us get data from nested levels of maps.