Episode #4 – Collections


An overview of core and contributed collections and their use.

Show Notes:

Overview of Persistent Collections

Intro | Follow-up | News

  • Discussion on community relations

Immutable Persistent Collections

  • List vs Vector
    – Linked list vs tree implementation
  • Map vs Set
    – Key can be anything
    – KV | Unique KV
    – Relational operations on set are outside of core
  • Seq library
    – ISeq (first, rest, cons)
    – Interop with Java utterable
    – Functions are written to work against the Seq interface
    – Seq in, Seq out
  • Immutability and Persistence
    – What is it?
    – Why is it important?
    – Implementation
  • Lazy collections
    – What does it mean to be lazy?
    – What does it mean to hold on the head?
  • Eager operations
    – Sometimes you need side effects so you cannot be lazy
    – Doall, doseq
  • Persistent vs. Transient
    – Performance
  • Specter – Nathan Marz
    – Ensure output format of collection operations is controlled
    – Editing operations
    Clojure West 2016 presentation: https://www.youtube.com/watch?v=VTCy_DkAJGk
  • Community contributed collections – shout out to
    – Chris Houser – Data.zip
    – Michał Marczyk – Ctries and AVL
    – Mark Engelberg – Priority maps
    – Peter Schuck – Lean Hash Maps
    Clojure West 2016 presentation: https://www.youtube.com/watch?v=GibNOQVelFY


Music: Thanks to the very talented ptzery for the permitting us to use his music on the opening and closing of the podcast. This track is Melon Hamburger. You can give his work some ❤️ and hear more on his SoundCloud.


11 thoughts on “Episode #4 – Collections

  1. Regarding the contribution process, just wanted to mention that I wrote a post last year about the process: http://insideclojure.org/2015/05/01/contributing-clojure/ and maintain lots of more detailed docs at http://dev.clojure.org/display/community/Contributing. The important parts of the latter docs will eventually make their way to clojure.org when I get around to it. Maria’s talk at the Conj last year also had a great overview of the process. I likely won’t make it to EuroClojure but I’d be happy to serve as a guest on your show if you wanted to talk about it sometime in the future. Keep up the great work on defn!


  2. Thanks Alex – we really appreciate the work you do. It would be great to have you on the show – that’s a great offer! Are you referring to the talk by Maria Geller on the ClojureScript Compiler?


  3. Hello!

    First of all, thank you so much for this awesome resource – I’m thoroughly enjoying the podcasts, and hope you continue to produce them as they’re aleays interesting and thought provoking.

    Secondly, would it be possible to update the feed so it is compatible with podcast players? It would give more people chance to find the show, and make it easier to see when new episodes are available.

    I think, for PocketCasts at least, it’s just a case of tweaking the RSS feed to incude links to media files tagged with an enclosure URL, eg: . I think that’s true for most podcast apps, but certainly for PocketCasts.

    If you want to test if the feed is valid then you can submit it here: http://www.pocketcasts.com/submit

    Thanks again for your excellent work!

    Liked by 1 person

  4. You can get the RSS feed URL from SoundCloud in https://soundcloud.com/settings/content and promote that. Works with all podcast clients. We use that for ZADevChat, and we added a link to it in our sidebar to make it easier for casual visitors to our SoundCloud page.

    Thanks for the great show! Just listened to this episode this morning and already it helped me debug an issue with a for loop behaving differently in the REPL!


  5. Yes, that’s the one we use but I haven’t added it into any place of prominence. Nice idea so I’ll find a few places to put the link so that it’s a bit more obvious. Thanks.

    [ oh and amazed but glad that we actually helped!! ]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s