on master help sign in
Relax constraints on bindMaybeTable and bindTheseTable
17c67adShane O'Brien
src/Rel8/Query/Maybe.hs+4−4
@@ -7,6 +7,7 @@ module Rel8.Query.Maybe
7where
7where
8
8
9-- base
9-- base
10+import Data.Functor ( (<&>) )
10import Prelude
11import Prelude
11
12
12-- opaleye
13-- opaleye
@@ -65,11 +66,10 @@ catMaybeTable ma@(MaybeTable _ a) = do
65--
66--
66-- This is similar to 'traverseMaybeTable', followed by a @join@ on the
67-- This is similar to 'traverseMaybeTable', followed by a @join@ on the
67-- resulting @MaybeTable@s.
68-- resulting @MaybeTable@s.
68−bindMaybeTable :: Monad m
69+bindMaybeTable :: Functor m
69 => (a -> m (MaybeTable b)) -> MaybeTable a -> m (MaybeTable b)
70 => (a -> m (MaybeTable b)) -> MaybeTable a -> m (MaybeTable b)
70−bindMaybeTable query (MaybeTable input a) = do
71+bindMaybeTable query (MaybeTable input a) =
71− MaybeTable output b <- query a
72− pure $ MaybeTable (input <> output) b
72+ query a <&> \(MaybeTable output b) -> MaybeTable (input <> output) b
73
73
74
74
75-- | Extend an optional query with another query. This is useful if you want
75-- | Extend an optional query with another query. This is useful if you want
src/Rel8/Query/These.hs+5−4
@@ -13,6 +13,7 @@ module Rel8.Query.These
13where
13where
14
14
15-- base
15-- base
16+import Data.Functor ( (<&>) )
16import Prelude
17import Prelude
17
18
18-- opaleye
19-- opaleye
@@ -111,11 +112,11 @@ loseThoseTable t@(TheseTable (MaybeTable _ a) (MaybeTable _ b)) = do
111 result = (mempty `asTypeOf` result) {expr = tag}
112 result = (mempty `asTypeOf` result) {expr = tag}
112
113
113
114
114−bindTheseTable :: (Table Expr a, Semigroup a, Monad m)
115+bindTheseTable :: (Table Expr a, Semigroup a, Functor m)
115 => (i -> m (TheseTable a b)) -> TheseTable a i -> m (TheseTable a b)
116 => (i -> m (TheseTable a b)) -> TheseTable a i -> m (TheseTable a b)
116−bindTheseTable query (TheseTable here (MaybeTable input i)) = do
117+bindTheseTable query (TheseTable here (MaybeTable input i)) =
117− TheseTable here' (MaybeTable output b) <- query i
118+ query i <&> \(TheseTable here' (MaybeTable output b)) ->
118− pure $ TheseTable (here <> here') (MaybeTable (input <> output) b)
119+ TheseTable (here <> here') (MaybeTable (input <> output) b)
119
120
120
121
121bitraverseTheseTable :: ()
122bitraverseTheseTable :: ()