module Data.Set.Ordered.Extra
( OLSet
, ORSet
, toSetL
, toSetR
, toListL
, toListR
) where
import Data.Coerce (coerce)
import Data.Foldable (toList)
import qualified Data.Set.Ordered as OSet
type OLSet a = OSet.Bias OSet.L (OSet.OSet a)
type ORSet a = OSet.Bias OSet.R (OSet.OSet a)
toSetL :: Ord a => [a] -> OLSet a
toSetL = coerce . OSet.fromList
toSetR :: Ord a => [a] -> ORSet a
toSetR = coerce . OSet.fromList
toListL :: forall a. OLSet a -> [a]
toListL = toList . coerce @(OLSet a) @(OSet.OSet a)
toListR :: forall a. ORSet a -> [a]
toListR = toList . coerce @(ORSet a) @(OSet.OSet a)