@@ -1,3 +1,4 @@
1+{-# LANGUAGE PolyKinds #-}
1{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE TypeFamilies #-}
2{-# LANGUAGE AllowAmbiguousTypes #-}
3{-# LANGUAGE AllowAmbiguousTypes #-}
3{-# LANGUAGE DataKinds #-}
4{-# LANGUAGE DataKinds #-}
@@ -33,14 +34,13 @@ import GHC.TypeLits
33import Data.Generics.Internal.Void
34import Data.Generics.Internal.Void
34import Data.Generics.Internal.Families.Changing
35import Data.Generics.Internal.Families.Changing
35import Data.Generics.Internal.VL.Traversal
36import Data.Generics.Internal.VL.Traversal
36−import Data.Generics.Internal.VL.Lens
38import GHC.Generics
38import GHC.Generics
39import Data.Kind
39import Data.Kind
40import Data.Generics.Internal.VL.Iso
40import Data.Generics.Internal.VL.Iso
41import Data.Generics.Internal.GenericN
41import Data.Generics.Internal.GenericN
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
44 param :: Applicative g => (a -> g b) -> s -> g t
44 param :: Applicative g => (a -> g b) -> s -> g t
@@ -50,6 +50,8 @@ instance
50 , s ~ Infer t (P n b 'PTag) a
50 , s ~ Infer t (P n b 'PTag) a
51 , t ~ Infer s (P n a 'PTag) b
51 , t ~ Infer s (P n a 'PTag) b
52 , Error ((ArgCount s) <=? n) n (ArgCount s) s
52 , Error ((ArgCount s) <=? n) n (ArgCount s) s
53 , GHasParam n (RepN s) (RepN t) a b
55 , GHasParam n (RepN s) (RepN t) a b
54 ) => HasParam n s t a b where
56 ) => HasParam n s t a b where