title: Implementing Custom Data Structures Using Clojure Protocols
body: <p>I may have missed the whole point about protocols but my question is, can protocols be used to dictate how to iterate a custom data structure or how println would print the object?</p>
  
  <p>Assuming a map with two vectors,</p>
  
  <pre><code>{:a [] :b []}
  </code></pre>
  
  <p>When called first on it I would like to take from the :a vector but when conj on this structure i would like to conj to :b. Can I use protocols to achieve this type of behavior?</p>