{-# LANGUAGE CPP #-}

-- | @Set@. Import as:

--

-- > import qualified RIO.Set as Set

--

-- This module does not export any partial or unchecked functions.  For those,

-- see "RIO.Set.Partial" and "RIO.Set.Unchecked"

module RIO.Set
  (
  -- * Set type

    Data.Set.Set

  -- * Operators

  , (Data.Set.\\)

  -- * Query

  , Data.Set.null
  , Data.Set.size
  , Data.Set.member
  , Data.Set.notMember
  , Data.Set.lookupLT
  , Data.Set.lookupGT
  , Data.Set.lookupLE
  , Data.Set.lookupGE
  , Data.Set.isSubsetOf
  , Data.Set.isProperSubsetOf

  -- * Construction

  , Data.Set.empty
  , Data.Set.singleton
  , Data.Set.insert
  , Data.Set.delete

  -- * Combine

  , Data.Set.union
  , Data.Set.unions
  , Data.Set.difference
  , Data.Set.intersection

  -- * Filter

  , Data.Set.filter
#if MIN_VERSION_containers(0,5,8)
  , Data.Set.takeWhileAntitone
  , Data.Set.dropWhileAntitone
  , Data.Set.spanAntitone
#endif
  , Data.Set.partition
  , Data.Set.split
  , Data.Set.splitMember
  , Data.Set.splitRoot

  -- * Indexed

  , Data.Set.lookupIndex
#if MIN_VERSION_containers(0,5,8)
  , Data.Set.take
  , Data.Set.drop
  , Data.Set.splitAt
#endif

  -- * Map

  , Data.Set.map

  -- * Folds

  , Data.Set.foldr
  , Data.Set.foldl
  -- ** Strict folds

  , Data.Set.foldr'
  , Data.Set.foldl'

  -- * Min\/Max

#if MIN_VERSION_containers(0,5,9)
  , Data.Set.lookupMin
  , Data.Set.lookupMax
#endif
  , Data.Set.deleteMin
  , Data.Set.deleteMax
  , Data.Set.maxView
  , Data.Set.minView

  -- * Conversion


  -- ** List

  , Data.Set.elems
  , Data.Set.toList
  , Data.Set.fromList

  -- ** Ordered list

  , Data.Set.toAscList
  , Data.Set.toDescList

  -- * Debugging

  , Data.Set.showTree
  , Data.Set.showTreeWith
  , Data.Set.valid
  ) where

import qualified Data.Set