order-maintenance-0.0.0.0: src/Control/Monad/Trans/Order/Raw.hs
module Control.Monad.Trans.Order.Raw (
RawOrder,
OrderCell,
RawElement,
ElementCell,
RawAlgorithm (
RawAlgorithm,
newOrder,
compareElements,
insertMinimum,
insertMaximum,
insertAfter,
insertBefore,
delete
)
) where
import Control.Monad.ST
import Data.STRef
type RawOrder o s = STRef s (OrderCell o s)
type family OrderCell o s
type RawElement o s = STRef s (ElementCell o s)
type family ElementCell o s
data RawAlgorithm o s = RawAlgorithm {
newOrder :: ST s (RawOrder o s),
compareElements :: RawElement o s -> RawElement o s -> ST s Ordering,
insertMinimum :: RawOrder o s -> ST s (RawElement o s),
insertMaximum :: RawOrder o s -> ST s (RawElement o s),
insertAfter :: RawElement o s -> RawOrder o s -> ST s (RawElement o s),
insertBefore :: RawElement o s -> RawOrder o s -> ST s (RawElement o s),
delete :: RawElement o s -> RawOrder o s -> ST s ()
}