packages feed

schedule-0.1.0.0: test/Data/Rsv/Example.hs

{-# OPTIONS_GHC -fno-warn-type-defaults #-}

{-| Examples for various "Data.Rsv" structures. -}

module Data.Rsv.Example where

-- external
import           Control.Monad.Trans.State.Strict (evalStateT, state)
import           Data.Functor.Identity            (runIdentity)
import           Data.Maybe                       (isJust)

-- internal
import qualified Data.Rsv.RMMap                   as RM


-- | Basic usage example for 'RMMap'
--
-- >>> rMMapExample0
-- True
rMMapExample0 :: Bool
rMMapExample0 = runIdentity $ (`evalStateT` RM.empty) $ do
  sDelete           <- state $ RM.enqueue (1000, const "my callback")
  notAlreadyRemoved <- state $ RM.unqueue sDelete
  return $ isJust notAlreadyRemoved