This is not the answer to your question, rather as an extended comment suggesting a different route on how to solve the problem.
Haskell newtype , , , , . , .
Haskell 3 , :
SYB GHC Generics. , a -> Void. a -> Void, .
a -> b , a b:
instance (Constructive a, Constructive b) => Constructive (a -> b) where
...
x :: b , a -> b const x. a , a -> b absurd. a b , a -> b Void.
Haskell , .
, , GHC , . , ->,
- SYB ,
Data. , . : - GHC Generics ADT . ,
instance, Generics.
AdvancedOverlap. , .