@@ -28,14 +28,14 @@ instance Query MyQuery where
2828 type QueryResult MyQuery = ()
2929 crop _ _ = ()
3030
31−instance (Ord k, Query a, Eq (QueryResult a)) => Query (Selector k a) where
31+instance (Ord k, Query a, Eq (QueryResult a), Align (MonoidalMap k)) => Query (Selector k a) where
3232 type QueryResult (Selector k a) = Selector k (QueryResult a)
3333 crop q r = undefined
3434
3535newtype Selector k a = Selector { unSelector :: MonoidalMap k a }
3636 deriving (Show, Read, Eq, Ord, Functor)
3737
38−instance (Ord k, Eq a, Monoid a) => Semigroup (Selector k a) where
38+instance (Ord k, Eq a, Monoid a, Align (MonoidalMap k)) => Semigroup (Selector k a) where
3939 (Selector a) <> (Selector b) = Selector $ fmapMaybe id $ f a b
4040 where
4141 f = alignWith $ \case
@@ -45,14 +45,14 @@ instance (Ord k, Eq a, Monoid a) => Semigroup (Selector k a) where
4545 let z = x `mappend` y
4646 in if z == mempty then Nothing else Just z
4747
48−instance (Ord k, Eq a, Monoid a) => Monoid (Selector k a) where
48+instance (Ord k, Eq a, Monoid a, Align (MonoidalMap k)) => Monoid (Selector k a) where
4949 mempty = Selector AMap.empty
5050 mappend = (<>)
5151
52−instance (Eq a, Ord k, Group a) => Group (Selector k a) where
52+instance (Eq a, Ord k, Group a, Align (MonoidalMap k)) => Group (Selector k a) where
5353 negateG = fmap negateG
5454
55−instance (Eq a, Ord k, Group a) => Additive (Selector k a)
55+instance (Eq a, Ord k, Group a, Align (MonoidalMap k)) => Additive (Selector k a)
5656
5757main :: IO ()
5858main = do