es a 'Control.Lens.Traversal.Traversal' that checks a predicate on a key before
-- allowing you to traverse into a value.
value :: (k -> Bool) -> IndexedTraversal' k (k, v) v
value p f kv@(k,v)
  | p k       = (,) k <$> indexed f k v
  | otherwise = pure kv
{-# INLINE valu
value :: (k -> Bool) -> IndexedTraversal' k (k, v) v
value p f kv@(k,v)
  | p k       = (,) k <$> indexed f k v
  | otherwise = pure kv
value p f kv@(k,v)
  | p k       = (,) k <$> indexed f k v
  | otherwise = pure kv