This pattern matches any possible value constructor, just like you said! For example, if you put your code in a file and run ghc with -ddump-deriv , here is what you get:
==================== Derived instances ==================== Derived instances: instance GHC.Classes.Eq Main.Person where GHC.Classes.== (Main.Person a1_alh a2_ali a3_alj) (Main.Person b1_alk b2_all b3_alm) = ((((a1_alh GHC.Classes.== b1_alk)) GHC.Classes.&& ((a2_ali GHC.Classes.== b2_all))) GHC.Classes.&& ((a3_alj GHC.Classes.== b3_alm))) GHC.Classes./= a_aln b_alo = GHC.Classes.not ((GHC.Classes.==) a_aln b_alo)
source share