content: -- | An 'OrdPSQ' uses the 'Ord' instance of the key type to build a priority
  -- search queue.
  --
  -- It is based on Ralf Hinze's work.
  --
  -- * Hinze, R., A Simple Implementation Technique for Priority Search Queues,
  --   ICFP 2001, pp. 110-121
  --
  -- <http://citeseer.ist.psu.edu/hinze01simple.html>
  --
  -- This means it is similar to the
  -- <http://hackage.haskell.org/package/PSQueue-1.1 PSQueue> package but
  -- our benchmarks showed it perform quite a bit faster.
  {-# LANGUAGE Safe                #-}
  {-# LANGUAGE ScopedTypeVariables #-}
  module Data.OrdPSQ
      ( -- * Type
        OrdPSQ
  
        -- * Query
      , null
      , size
      , member
      , lookup
      , findMin
  
        -- * Construction
      , empty
      , singleton
  
        -- * Insertion
      , insert
  
        -- * Delete/Update
      , delete
      , deleteMin
      , alter
      , alterMin
  
        -- * Conversion
      , fromList
      , toList
      , toAscList
      , keys
  
        -- * Views
      , insertView
      , deleteView
      , minView
      , atMostView
  
        -- * Traversals
      , map
      , unsafeMapMonotonic
      , fold'
  
        -- * Validity check
      , valid
      ) where
  
  import           Prelude              hiding (foldr, lookup, map, null)
  
  import           Data.OrdPSQ.Internal
  