Apply a microsurgery s to a type a for DerivingVia.
For the Monoid class, see ProductSurgery.
Example
{-# LANGUAGE DerivingVia #-}
-- The constructors must be visible.
import Generic.Data.Microsurgery
(Surgery, Surgery'(..), Generically(..), Derecordify)
data T = T { unT :: Int }
deriving Show via (Surgery Derecordify T)
-- T won't be shown as a record:
-- show (T {unT = 3}) == "T 3"