Generalizing 'jq' and Traversal Systems using optics and standard monads
Why do you need all this theory when you can use simple imperative languages?<p><pre><code>    for staff in company.staff:
      for pet in staff.pets:
        if pet.type == 'cat':
          print(pet.name + " belongs to " + staff.name)
</code></pre>
I don't understand why functional languages are used at all.