anchor.diff:  ;= Franklin is 25 and likes running
   ----
   
  -You can even destructure using auto-resolved keywords, which will again be bound to the name-only part of the namespace:
  +You can even destructure using auto-resolved keywords, which will again be bound to only the name part of the key:
   
   [source,clojure]
   ----
  
positive.code: ----
  
  Creating and destructuring maps with auto-resolved keywords allow us to write code using a namespace alias (here `p`) that is defined by a `require` in the current namespace, giving us a means of namespace indirection that can be changed at a single place in the code.
  
  == Where to destructure
  
  
negative.code: [source,clojure]
  ----
  (def numbers [1 2 3 4 5])
  (let [[x & remaining :as all] numbers]
    (apply prn [remaining all]))
  ;= (2 3 4 5) [1 2 3 4 5]
  ----
  
  Here `remaining` is bound to a sequence containing the remaining elements of the `numbers` vector while `all` has been bound to the original `vector`. What happens when we destructure a string instead?
  
  [source,clojure]
  ----
  (def word "Clojure")
  (let [[x & remaining :as all] word]
    (apply prn [x remaining all]))
  ;= \C (\l \o \j \u \r \e) "Clojure"
  ----
  
  Here `all` is bound to the original structure (String, vector, list, whatever it may be) and `x` is bound to the character `\C`, and `remaining` is the remaining list of characters.
  
  You can combine any or all of these techniques at the same time at your discretion.
  
  [source,clojure]
  ----
  (def fruits ["apple" "orange" "strawberry" "peach" "pear" "lemon"])
  (let [[item1 _ item3 & remaining :as all-fruits] fruits]
    (println "The first and third fruits are" item1 "and" item3)
    (println "These were taken from" all-fruits)
    (println "The fruits after them are" remaining))
  ;= The first and third fruits are apple and strawberry
  ;= These were taken from [apple orange strawberry peach pear lemon]
  ;= The fruits after them are (peach pear lemon)
  