This isn't really an issue, but @mckeankylej just pointed out to me that we inadvertently [wrote the same library](http://hackage.haskell.org/package/vinyl-plus). In particular, your `Union` is identical to my [`CoRec`](http://hackage.haskell.org/package/vinyl-plus-0.1.0.0/docs/Data-Vinyl-Types.html) and your lens machinery is identical to my [optics](http://hackage.haskell.org/package/vinyl-plus-0.1.0.0/docs/Data-Vinyl-Optic-Plain-Class.html). (The typeclass in that module should actually redefine rput, rget, etc. as well, but it looks like I got lazy and forgot to add those).
This issue appears to be discussing a feature request or bug report related to the repository. Based on the content, it seems to be still under discussion. The issue was opened by andrewthad and has received 2 comments.