: Warning: -XGeneralizedNewtypeDeriving is not allowed in Safe Haskell; ignoring -XGeneralizedNewtypeDeriving :16:29: Can't make a derived instance of ‘Op T2’: ‘Op’ is not a derivable class Try GeneralizedNewtypeDeriving for GHC's newtype-deriving extension In the newtype declaration for ‘T2’ :19:9: Not in scope: data constructor ‘T2’ Perhaps you meant ‘T1’ (line 13) :22:4: Not in scope: ‘y’