module System.IO.Order ( newMinimum, newMaximum, newAfter, newBefore ) where -- Data import Data.Order.Element.IO.Type import Data.Order.Representation import qualified Data.Order.Element.Representation as ElementRep import qualified Data.Order.Algorithm.Raw.Default as Default -- System import System.IO.Unsafe newMinimum :: IO Element newMinimum = Element <$> ElementRep.newMinimum orderRep newMaximum :: IO Element newMaximum = Element <$> ElementRep.newMaximum orderRep newAfter :: Element -> IO Element newAfter (Element elemRep) = Element <$> ElementRep.newAfter elemRep orderRep newBefore :: Element -> IO Element newBefore (Element elemRep) = Element <$> ElementRep.newBefore elemRep orderRep {-# NOINLINE orderRep #-} orderRep :: OrderRep Default.OrderCell Default.ElementCell orderRep = unsafePerformIO $ newOrderRep Default.rawAlgorithm