You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

23 lines
657 B

  1. module QueueEx where
  2. import Control.Applicative
  3. import Data.Dequeue (BankersDequeue)
  4. import qualified Data.Dequeue as Q
  5. -- |Shift a queue to the left, such as:
  6. -- [1, 2, 3] -> [2, 3, 1]
  7. shiftQueueLeft :: BankersDequeue a -> BankersDequeue a
  8. shiftQueueLeft = (\(Just (b, nq)) -> Q.pushBack nq b) <$> Q.popFront
  9. -- |Shift a queue to the right, such as:
  10. -- [1, 2, 3] -> [3, 1, 2]
  11. shiftQueueRight :: BankersDequeue a -> BankersDequeue a
  12. shiftQueueRight = (\(Just (b, nq)) -> Q.pushFront nq b) <$> Q.popBack
  13. -- |Convert a Queue back to a list.
  14. queueToList :: BankersDequeue a -> [a]
  15. queueToList q = Q.takeFront (length q) q