on master help sign in
Relax constraints on bindMaybeTable and bindTheseTable
commit17c67ad83ef36b496e814e000837fa03f14e20fb authorShane O'Brien <shane.obrien@circuithub.com> dateFri 18 Jun 2021, 03:50 (5 years ago) parent1dd532c
2 files changed+9−8
src/Rel8/Query/Maybe.hs+4−4 src/Rel8/Query/These.hs+5−4
src/Rel8/Query/Maybe.hs+4−4
@@ -7,6 +7,7 @@ module Rel8.Query.Maybe
77where
88
99-- base
10+import Data.Functor ( (<&>) )
1011import Prelude
1112
1213-- opaleye
@@ -65,11 +66,10 @@ catMaybeTable ma@(MaybeTable _ a) = do
6566--
6667-- This is similar to 'traverseMaybeTable', followed by a @join@ on the
6768-- resulting @MaybeTable@s.
68−bindMaybeTable :: Monad m
69+bindMaybeTable :: Functor m
6970 => (a -> m (MaybeTable b)) -> MaybeTable a -> m (MaybeTable b)
70−bindMaybeTable query (MaybeTable input a) = do
71− MaybeTable output b <- query a
72− pure $ MaybeTable (input <> output) b
71+bindMaybeTable query (MaybeTable input a) =
72+ query a <&> \(MaybeTable output b) -> MaybeTable (input <> output) b
7373
7474
7575-- | 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
1313where
1414
1515-- base
16+import Data.Functor ( (<&>) )
1617import Prelude
1718
1819-- opaleye
@@ -111,11 +112,11 @@ loseThoseTable t@(TheseTable (MaybeTable _ a) (MaybeTable _ b)) = do
111112 result = (mempty `asTypeOf` result) {expr = tag}
112113
113114
114−bindTheseTable :: (Table Expr a, Semigroup a, Monad m)
115+bindTheseTable :: (Table Expr a, Semigroup a, Functor m)
115116 => (i -> m (TheseTable a b)) -> TheseTable a i -> m (TheseTable a b)
116−bindTheseTable query (TheseTable here (MaybeTable input i)) = do
117− TheseTable here' (MaybeTable output b) <- query i
118− pure $ TheseTable (here <> here') (MaybeTable (input <> output) b)
117+bindTheseTable query (TheseTable here (MaybeTable input i)) =
118+ query i <&> \(TheseTable here' (MaybeTable output b)) ->
119+ TheseTable (here <> here') (MaybeTable (input <> output) b)
119120
120121
121122bitraverseTheseTable :: ()