Immutable data-structures are the bread and butter of functional programming. Advantages of immutability include the persistence of old versions, the thread-safety, and the ability to reason about these structures. However, repeatedly modifying data deep within a nested immutable structure can have severe performance costs.
Structures known as 'zippers' allow for efficient traversal and modification of immutable data-structures. In this beginner-to-intermediate level talk, zippers will be motivated and introduced in Scala. A successful practical application of zippers in the Argonaut JSON library will be examined.