@@ -96,6 +96,34 @@ sum1PrismManual eta = prism g f eta
9696 s -> Left s
9797 g = B
9898
99+sum1PrismManualChar :: Prism Sum1 Sum1 Char Char
100+sum1PrismManualChar eta = prism g f eta
101+ where
102+ f s1 = case s1 of
103+ A i -> Right i
104+ B _ -> Left s1
105+ C _ -> Left s1
106+ D _ -> Left s1
107+ g = A
108+
109+sum2PrismManual :: Prism Sum2 Sum2 Int Int
110+sum2PrismManual eta = prism g f eta
111+ where
112+ f s1 = case s1 of
113+ B2 i -> Right i
114+ s -> Left s
115+ g = B2
116+
117+
118+sum2PrismManualChar :: Prism Sum2 Sum2 Char Char
119+sum2PrismManualChar eta = prism g f eta
120+ where
121+ f s1 = case s1 of
122+ A2 i -> Right i
123+ s -> Left s
124+ g = A2
125+
126+
99127subtypePrismManual :: Prism Sum1 Sum1 Sum2 Sum2
100128subtypePrismManual eta = prism g f eta
101129 where
@@ -144,6 +172,15 @@ subtypePrismGeneric = _Sub
144172sum1TypePrism :: Prism Sum1 Sum1 Int Int
145173sum1TypePrism = _Typed @Int
146174
175+sum1TypePrismChar :: Prism Sum1 Sum1 Char Char
176+sum1TypePrismChar = _Typed @Char
177+
178+sum2TypePrism :: Prism Sum2 Sum2 Int Int
179+sum2TypePrism = _Typed @Int
180+
181+sum2TypePrismChar :: Prism Sum2 Sum2 Char Char
182+sum2TypePrismChar = _Typed @Char
183+
147184tests :: Test
148185tests = TestList $ map mkHUnitTest
149186 [ $(inspectTest $ 'fieldALensManual === 'fieldALensName)
@@ -156,4 +193,8 @@ tests = TestList $ map mkHUnitTest
156193 , $(inspectTest $ 'intTraversalManual === 'intTraversalDerived)
157194 , $(inspectTest $ 'sum1PrismManual === 'sum1PrismB)
158195 , $(inspectTest $ 'subtypePrismManual === 'subtypePrismGeneric)
196+ , $(inspectTest $ 'sum2PrismManualChar === 'sum2TypePrismChar)
197+ , $(inspectTest $ 'sum2PrismManual === 'sum2TypePrism)
198+ , $(inspectTest $ 'sum1PrismManualChar === 'sum1TypePrismChar)
199+ , $(inspectTest $ 'sum2PrismManualChar === 'sum2TypePrismChar)
159200 , $(inspectTest $ 'sum1PrismManual === 'sum1TypePrism) ]