rel8-internal
Safe HaskellNone
LanguageHaskell2010

Rel8.Internal.Query.Either

Synopsis

Documentation

keepLeftTable :: EitherTable Expr a b -> Query a Source #

Filter EitherTables, keeping only leftTables.

keepRightTable :: EitherTable Expr a b -> Query b Source #

Filter EitherTables, keeping only rightTables.

bitraverseEitherTable :: (a -> Query c) -> (b -> Query d) -> EitherTable Expr a b -> Query (EitherTable Expr c d) Source #

bitraverseEitherTable f g x will pass all leftTables through f and all rightTables through g. The results are then lifted back into leftTable and rightTable, respectively. This is similar to bitraverse for Either.

For example,

>>> :{
select do
  x <- values (map lit [ Left True, Right (42 :: Int32) ])
  bitraverseEitherTable (\y -> values [y, not_ y]) (\y -> pure (y * 100)) x
:}
[ Left True
, Left False
, Right 4200
]