module System.IO.Order ( newMinimum, newMaximum, newAfter, newBefore ) where -- Data import Data.Order import Data.Order.Internals (OrderRep, newOrderRep) import qualified Data.Order.Internals as Internals import Data.Order.Raw.Algorithm -- System import System.IO.Unsafe newMinimum :: IO (Element Global) newMinimum = Internals.newMinimum globalOrderRep newMaximum :: IO (Element Global) newMaximum = Internals.newMaximum globalOrderRep newAfter :: Element Global -> IO (Element Global) newAfter elem = Internals.newAfter elem globalOrderRep newBefore :: Element Global -> IO (Element Global) newBefore elem = Internals.newBefore elem globalOrderRep {-# NOINLINE globalOrderRep #-} globalOrderRep :: OrderRep Global globalOrderRep = unsafePerformIO $ newOrderRep defaultRawAlgorithm