deque-0.4.4.1: library/Deque/Lazy.hs
-- |
-- Definitions of lazy Deque.
--
-- The typical `toList` and `fromList` conversions are provided by means of
-- the `Foldable` and `IsList` instances.
module Deque.Lazy
( LazyDefs.Deque,
fromStrict,
toStrict,
LazyDefs.fromConsAndSnocLists,
LazyDefs.cons,
LazyDefs.snoc,
LazyDefs.reverse,
LazyDefs.shiftLeft,
LazyDefs.shiftRight,
LazyDefs.filter,
LazyDefs.take,
LazyDefs.drop,
LazyDefs.takeWhile,
LazyDefs.dropWhile,
LazyDefs.span,
LazyDefs.uncons,
LazyDefs.unsnoc,
LazyDefs.null,
LazyDefs.head,
LazyDefs.last,
LazyDefs.tail,
LazyDefs.init,
)
where
import qualified Deque.Lazy.Defs as LazyDefs
import Deque.Prelude
import qualified Deque.Strict.Defs as StrictDefs
-- | Convert strict deque to lazy deque.
fromStrict :: StrictDefs.Deque a -> LazyDefs.Deque a
fromStrict (StrictDefs.Deque consList snocList) = LazyDefs.Deque (toList consList) (toList snocList)
-- | Convert lazy deque to strict deque.
toStrict :: LazyDefs.Deque a -> StrictDefs.Deque a
toStrict (LazyDefs.Deque consList snocList) = StrictDefs.Deque (fromList consList) (fromList snocList)