packages feed

containers-0.8.1: src/Data/Set/Merge.hs

{-# LANGUAGE CPP #-}
#ifdef __GLASGOW_HASKELL__
{-# LANGUAGE Safe #-}
#endif

-- | This module defines an API for writing functions that merge two sets. The key
-- functions are 'merge' and 'mergeA'. Each of these can be used with several
-- different \"merge tactics\".
--
-- @since 0.8.1
module Data.Set.Merge
  (
    -- ** Simple merge tactic types
    SimpleWhenMissing
  , SimpleWhenMatched

    -- ** General combining function
  , merge

    -- *** @WhenMissing@ tactics
  , dropMissing
  , preserveMissing
  , filterMissing

    -- *** @WhenMatched@ tactics
  , dropMatched
  , preserveMatched
  , filterMatched

    -- ** Applicative merge tactic types
  , WhenMissing
  , WhenMatched

    -- ** Applicative general combining function
  , mergeA

    -- *** @WhenMissing@ tactics
    -- | The tactics described for 'merge' work for 'mergeA' as well.
    -- Furthermore, the following are available.
  , filterAMissing
  , whenMissing

    -- *** @WhenMatched@ tactics
    -- | The tactics described for 'merge' work for 'mergeA' as well.
    -- Furthermore, the following are available.
  , filterAMatched

    -- ** Miscellaneous tactic functions
  , runWhenMissing
  , runWhenMatched
  ) where

import Data.Set.Internal