Generalizing 'jq' and Traversal Systems using optics and standard monads
Published: 27 September 2020
Traversal Systems, as defined by the author of this article Chris Penner, allow "you [to] dive deeply into a piece of data and may allow you to fetch, query, and edit the structure as you go while maintaining references to other pieces of the structure to influence your work". Basically it's a system for navigating and manipulating data structures where nesting is frequently used (JSON, HTML, CSS, etc). In this article, Chris builds one in Haskell to handle JSON, using optics and monads to query and update objects.