The Zipper

“Zipper is a very handy Data Structure that lets us replace an item deep in a complex data structure, e.g., a tree or a term, without any mutation.” –Oleg Kiselyov