@@ -1,3 +1,4 @@
1+{-# LANGUAGE PolyKinds #-}
12{-# LANGUAGE TypeFamilies #-}
23{-# LANGUAGE AllowAmbiguousTypes #-}
34{-# LANGUAGE DataKinds #-}
@@ -33,14 +34,13 @@ import GHC.TypeLits
3334import Data.Generics.Internal.Void
3435import Data.Generics.Internal.Families.Changing
3536import Data.Generics.Internal.VL.Traversal
36−import Data.Generics.Internal.VL.Lens
3737
3838import GHC.Generics
3939import Data.Kind
4040import Data.Generics.Internal.VL.Iso
4141import Data.Generics.Internal.GenericN
4242
43−class HasParam (p :: Nat) s t a b | p t a b -> s, p s a b -> t where
43+class HasParam (p :: Nat) s t a b | p t a b -> s, p s a b -> t, p s -> a, p t -> b where
4444 param :: Applicative g => (a -> g b) -> s -> g t
4545
4646instance
@@ -50,6 +50,8 @@ instance
5050 , s ~ Infer t (P n b 'PTag) a
5151 , t ~ Infer s (P n a 'PTag) b
5252 , Error ((ArgCount s) <=? n) n (ArgCount s) s
53+ , a ~ ArgAt s n
54+ , b ~ ArgAt t n
5355 , GHasParam n (RepN s) (RepN t) a b
5456 ) => HasParam n s t a b where
5557