generalized infix lens and setter combinators