A Type Class for Bidirectionalization : Or, a Light-Weight Approach to the View-Update Problem