taskell-1.3.5.0: src/Data/Taskell/Seq.hs
{-# LANGUAGE NoImplicitPrelude #-}
module Data.Taskell.Seq where
import ClassyPrelude
import Data.Sequence (deleteAt, insertAt, (!?))
extract :: Int -> Seq a -> Maybe (Seq a, a)
extract idx xs = (,) (deleteAt idx xs) <$> xs !? idx
shiftBy :: Int -> Int -> Seq a -> Maybe (Seq a)
shiftBy idx dir xs = do
(a, current) <- extract idx xs
return $ insertAt (idx + dir) current a