.~ -package:universum -is:exact -package:generic-lens package:microlens

(.~) assigns a value to the target. It's the same thing as using (%~) with const:
l .~ x = l %~ const x
See set if you want a non-operator synonym. Here it is used to change 2 fields of a 3-tuple:
>>> (0,0,0) & _1 .~ 1 & _3 .~ 3
(1,0,3)
This is a version of (.~) which modifies the structure and returns it along with the old value:
>>> (1, 2) & _1 <<.~ 0
(1, (0, 2))
Simpler type signatures:
(<<.~) ::             Lens s t a b      -> b -> s -> (a, t)
(<<.~) :: Monoid a => Traversal s t a b -> b -> s -> (a, t)