packages feed

tools-yj-0.1.0.34: src/Data/Sequence/ToolsYj.hs

{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE LambdaCase #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Data.Sequence.ToolsYj (

	cons, snoc, uncons, unsnoc,

	splitAt'

	) where

import Data.Sequence qualified as Seq

cons :: a -> Seq.Seq a -> Seq.Seq a
cons = (Seq.:<|)

snoc :: Seq.Seq a -> a -> Seq.Seq a
snoc = (Seq.:|>)

uncons :: Seq.Seq a -> Maybe (a, Seq.Seq a)
uncons = \case Seq.Empty -> Nothing; x Seq.:<| s -> Just (x, s)

unsnoc :: Seq.Seq a -> Maybe (Seq.Seq a, a)
unsnoc = \case Seq.Empty -> Nothing; s Seq.:|> x -> Just (s, x)

splitAt' :: Int -> Seq.Seq a -> Maybe (Seq.Seq a, Seq.Seq a)
splitAt' n s
	| Seq.length s < n = Nothing
	| otherwise = Just $ Seq.splitAt n s