order-maintenance 0.2.0.0 → 0.2.1.0
raw patch · 7 files changed
+58/−24 lines, 7 filesdep ~order-maintenancePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: order-maintenance
API changes (from Hackage documentation)
- Data.Order.Pair: companion :: (forall o. OrderPair o a) -> a
- Data.Order.Pair: empty :: OrderPair o ()
- Data.Order.Pair: emptyBy :: Algorithm -> OrderPair o ()
+ Control.Monad.Trans.Order.Lazy: lift :: Functor f => f a -> OrderT o f a
+ Data.Order.Pair: emptyOrderPair :: a -> OrderPair o a
+ Data.Order.Pair: emptyOrderPairUsing :: Algorithm -> a -> OrderPair o a
+ Data.Order.Pair: withoutOrder :: (forall o. OrderPair o a) -> a
Files
- order-maintenance.cabal +5/−4
- src/library/Control/Monad/Trans/Order/Lazy.hs +8/−0
- src/library/Control/Monad/Trans/Order/Lazy/Type.hs +1/−1
- src/library/Control/Monad/Trans/Order/Representation.hs +14/−5
- src/library/Control/Monad/Trans/Order/Strict.hs +10/−2
- src/library/Data/Order/Pair.hs +14/−12
- src/library/Data/Order/Pair/Type.hs +6/−0
order-maintenance.cabal view
@@ -1,5 +1,5 @@ Name: order-maintenance-Version: 0.2.0.0+Version: 0.2.1.0 Cabal-Version: >= 1.16 Build-Type: Simple License: BSD3@@ -9,7 +9,7 @@ Maintainer: wolfgang-it@jeltsch.info Stability: provisional Homepage: http://hackage.haskell.org/package/order-maintenance-Package-URL: http://hackage.haskell.org/packages/archive/order-maintenance/0.2.0.0/order-maintenance-0.2.0.0.tar.gz+Package-URL: http://hackage.haskell.org/package/order-maintenance-0.2.1.0/order-maintenance-0.2.1.0.tar.gz Synopsis: Algorithms for the order maintenance problem with a safe interface Description: This package is about order maintenance.@@ -25,7 +25,7 @@ Type: darcs Location: http://hub.darcs.net/jeltsch/order-maintenance- Tag: order-maintenance-0.2.0.0+ Tag: order-maintenance-0.2.1.0 Library @@ -39,6 +39,7 @@ GeneralizedNewtypeDeriving KindSignatures Rank2Types+ TupleSections Exposed-Modules: Control.Monad.Trans.Order Control.Monad.Trans.Order.Lazy@@ -75,7 +76,7 @@ containers >= 0.5 && < 0.6, QuickCheck >= 2.6 && < 3, transformers >= 0.3 && < 0.6,- order-maintenance == 0.2.0.0+ order-maintenance == 0.2.1.0 Default-Language: Haskell2010
src/library/Control/Monad/Trans/Order/Lazy.hs view
@@ -10,6 +10,7 @@ OrderT, performT, getOrderToken,+ lift, -- * Element creation @@ -66,6 +67,13 @@ getOrderToken :: Applicative f => OrderT o f () getOrderToken = OrderT $ OrderTRep.getOrderToken++lift :: Functor f => f a -> OrderT o f a+lift struct = OrderT $ OrderTRep.lift struct+{-NOTE:+ This version is more general than the one from MonadTrans, since it works+ with arbitrary functors, not just monads.+-} -- * Element creation
src/library/Control/Monad/Trans/Order/Lazy/Type.hs view
@@ -10,7 +10,7 @@ import Control.Monad.Trans.Class import Control.Monad.IO.Class import qualified Control.Monad.Trans.State.Lazy as Lazy-import Control.Monad.Trans.Order.Representation+import Control.Monad.Trans.Order.Representation hiding (lift) newtype OrderT o m a = OrderT { runOrderT :: OrderTRep Lazy.StateT o m a
src/library/Control/Monad/Trans/Order/Representation.hs view
@@ -5,6 +5,7 @@ OrderTRep (OrderTRep), performT, getOrderToken,+ lift, -- * Element creation @@ -22,11 +23,12 @@ -- Control -import Control.Applicative-import Control.Monad-import Control.Monad.Fix-import Control.Monad.Trans.Class-import Control.Monad.IO.Class+import Control.Applicative+import Control.Monad+import Control.Monad.Fix+import Control.Monad.Trans.Class (MonadTrans)+import qualified Control.Monad.Trans.Class (lift)+import Control.Monad.IO.Class -- Data @@ -130,6 +132,13 @@ getOrderToken :: (StateMonadTrans t, Applicative f) => OrderTRep t o f () getOrderToken = OrderTRep $ state $ \ orderRep -> (orderRep `seq` (), orderRep)++lift :: (StateMonadTrans t, Functor f) => f a -> OrderTRep t o f a+lift struct = OrderTRep $ stateT $ \ orderRep -> (, orderRep) <$> struct+{-NOTE:+ This version is more general than the one from MonadTrans, since it works+ with arbitrary functors, not just monads.+-} -- * Element creation
src/library/Control/Monad/Trans/Order/Strict.hs view
@@ -30,7 +30,8 @@ import Control.Applicative import Control.Monad import Control.Monad.Fix-import Control.Monad.Trans.Class+import Control.Monad.Trans.Class (MonadTrans)+import qualified Control.Monad.Trans.Class as Trans (lift) import Control.Monad.IO.Class import qualified Control.Monad.Trans.State.Strict as Strict import Control.Monad.Trans.Order.Representation@@ -135,7 +136,7 @@ -- MonadTrans - lift' = lift+ lift' = Trans.lift -- MonadIO @@ -151,6 +152,13 @@ getOrderToken :: Applicative f => OrderT o f () getOrderToken = OrderT $ OrderTRep.getOrderToken++lift :: Functor f => f a -> OrderT o f a+lift struct = OrderT $ OrderTRep.lift struct+{-NOTE:+ This version is more general than the one from MonadTrans, since it works+ with arbitrary functors, not just monads.+-} -- * Element creation
src/library/Data/Order/Pair.hs view
@@ -1,9 +1,9 @@ module Data.Order.Pair ( OrderPair,- empty,- emptyBy,- companion+ emptyOrderPair,+ emptyOrderPairUsing,+ withoutOrder ) where @@ -25,15 +25,17 @@ -- NOTE: OrderPair is imported from Data.Order.Pair.Type. -empty :: OrderPair o ()-empty = emptyBy defaultAlgorithm+emptyOrderPair :: a -> OrderPair o a+emptyOrderPair = emptyOrderPairUsing defaultAlgorithm -emptyBy :: Algorithm -> OrderPair o ()-emptyBy (Algorithm rawAlg) = OrderPair ((), emptyOrderRepBy rawAlg)+emptyOrderPairUsing :: Algorithm -> a -> OrderPair o a+emptyOrderPairUsing (Algorithm rawAlg) val = orderPair where -{-# NOINLINE emptyOrderRepBy #-}-emptyOrderRepBy :: RawAlgorithm RealWorld o e -> OrderRep o e-emptyOrderRepBy rawAlg = unsafePerformIO $ newOrderRep rawAlg+ orderPair = OrderPair (val, emptyOrderRepUsing rawAlg) -companion :: (forall o . OrderPair o a) -> a-companion (OrderPair (comp, _)) = comp+{-# NOINLINE emptyOrderRepUsing #-}+emptyOrderRepUsing :: RawAlgorithm RealWorld o e -> OrderRep o e+emptyOrderRepUsing rawAlg = unsafePerformIO $ newOrderRep rawAlg++withoutOrder :: (forall o . OrderPair o a) -> a+withoutOrder (OrderPair (comp, _)) = comp
src/library/Data/Order/Pair/Type.hs view
@@ -9,3 +9,9 @@ import Data.Order.Representation data OrderPair o a = forall o' e' . OrderPair (a, OrderRep o' e')++instance Functor (OrderPair o) where++ fmap fun (OrderPair (val, orderRep)) = OrderPair (fun val, orderRep)++ val <$ OrderPair (_, orderRep) = OrderPair (val, orderRep)