on master help sign in
Add GHasParam instance for K1
commitf4073ca9fdc7f35600dc655392da05c190cfe2f0 authorCsongor Kiss <kiss.csongor.kiss@gmail.com> dateMon 5 Feb 2018, 12:03 (9 years ago) parent2b9efe8
2 files changed+8−2
src/Data/Generics/Product/Internal/Param.hs+6 test/Spec.hs+2−2
src/Data/Generics/Product/Internal/Param.hs+6
@@ -49,15 +49,21 @@ instance (GHasParam p l l' a b, GHasParam p r r' a b) => GHasParam p (l :+: r) (
4949 gparam f (L1 l) = L1 <$> gparam @p f l
5050 gparam f (R1 r) = R1 <$> gparam @p f r
5151
52+-- the parameter we're looking for
5253instance GHasParam p (Rec (param p) a) (Rec (param p) b) a b where
5354 gparam = recIso
5455
56+-- other parameter
5557instance {-# OVERLAPPABLE #-}
5658 ( a ~ b
5759 , p1 ~ p2
5860 ) => GHasParam p (Rec p1 a) (Rec p2 b) c d where
5961 gparam _ = pure
6062
63+-- not a parameter
64+instance GHasParam p (K1 r a) (K1 r a) c d where
65+ gparam _ = pure
66+
6167instance GHasParam p s t a b => GHasParam p (M1 m meta s) (M1 m meta t) a b where
6268 gparam f (M1 x) = M1 <$> gparam @p f x
6369
test/Spec.hs+2−2
@@ -92,8 +92,8 @@ data Sum2 = A2 Char | B2 Int deriving (Generic, Show)
9292
9393data Sum3 a b c
9494 = A3 a a
95− | B3 b a a b
96− | C3 c a
95+ | B3 String b a a b
96+ | C3 c a Int
9797 deriving Generic
9898
9999-- TODO: these compile, but aren't wired in to inspection-testing yet