packages feed

papa-0.5.0: src/Papa/Bifunctors.hs

{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -Wall #-}

module Papa.Bifunctors (
  module P,
  biconcat,
  biconcatMap,
) where

import Data.Biapplicative as P (Biapplicative (bipure, (*>>), (<<*), (<<*>>)), biliftA2, biliftA3, (<<$>>), (<<**>>))
import Data.Bifoldable as P (Bifoldable (bifold, bifoldMap), biList, biall, biand, biany, biasum, bielem, bifind, bifoldl, bifoldl', bifoldlM, bifoldr, bifoldr', bifoldrM, biforM_, bifor_, bilength, bimapM_, bimsum, binotElem, binull, bior, biproduct, bisequenceA_, bisequence_, bisum, bitraverse_)
import Data.Bifunctor.Biff as P (Biff (runBiff))
import Data.Bifunctor.Clown as P (Clown (runClown))
import Data.Bifunctor.Fix as P (Fix (out))
import Data.Bifunctor.Flip as P (Flip (runFlip))
import Data.Bifunctor.Functor as P (BifunctorComonad (biduplicate, biextend, biextract), BifunctorFunctor (bifmap), BifunctorMonad (bibind, bijoin, bireturn), biliftM, biliftW)
import Data.Bifunctor.Join as P (Join (Join, runJoin))
import Data.Bifunctor.Joker as P (Joker (Joker, runJoker))
import Data.Bifunctor.Tannen as P (Tannen (Tannen, runTannen))
import Data.Bifunctor.Wrapped as P (WrappedBifunctor (WrapBifunctor, unwrapBifunctor))
import Data.Bitraversable as P (Bitraversable (bitraverse), bifoldMapDefault, bifor, biforM, bimapAccumL, bimapAccumR, bimapDefault, bimapM, bisequence, bisequenceA)
import Data.Monoid (Monoid)

biconcat ::
  (Bifoldable p, Monoid m) =>
  p m m ->
  m
biconcat =
  bifold

biconcatMap ::
  (Bifoldable p, Monoid m) =>
  (a -> m) ->
  (b -> m) ->
  p a b ->
  m
biconcatMap =
  bifoldMap