{-| Copyright : (C) 2019, QBayLogic B.V License : BSD2 (see the file LICENSE) Maintainer : QBayLogic B.V Convenience functions for "Data.Set.Ordered" from the package "ordered-containers". -} 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)