indexed 0.1 → 0.1.1
raw patch · 6 files changed
+63/−40 lines, 6 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Control.Monad.Indexed: infixl 1 >>>=
+ Control.Monad.Indexed: infixr 1 =<<<
+ Data.Functor.Indexed: (*>>) :: IxApplicative f => f i j a -> f j k b -> f i k b
+ Data.Functor.Indexed: (<<$>>) :: IxFunctor f => (a -> b) -> f j k a -> f j k b
+ Data.Functor.Indexed: (<<*) :: IxApplicative f => f i j a -> f j k b -> f i k a
+ Data.Functor.Indexed: (<<*>>) :: IxApplicative f => f i j (a -> b) -> f j k a -> f i k b
+ Data.Functor.Indexed: infixl 4 *>>
Files
- Control/Comonad/Indexed.hs +8/−8
- Control/Monad/Indexed.hs +15/−15
- Control/Monad/Indexed/Fix.hs +3/−3
- Control/Monad/Indexed/Trans.hs +3/−3
- Data/Functor/Indexed.hs +33/−10
- indexed.cabal +1/−1
Control/Comonad/Indexed.hs view
@@ -6,20 +6,20 @@ -- -- Maintainer : Reiner Pope <reiner.pope@gmail.com -- Stability : experimental--- Portability : portable +-- Portability : portable -- -----------------------------------------------------------------------------module Control.Comonad.Indexed - ( IxFunctor(..)- , IxCopointed(..)- , IxComonad(..)- , iduplicate- ) where+module Control.Comonad.Indexed+ ( IxFunctor(..)+ , IxCopointed(..)+ , IxComonad(..)+ , iduplicate+ ) where import Data.Functor.Indexed class IxCopointed w => IxComonad w where- iextend :: (w j k a -> b) -> w i k a -> w i j b+ iextend :: (w j k a -> b) -> w i k a -> w i j b iduplicate :: IxComonad w => w i k a -> w i j (w j k a) iduplicate = iextend id
Control/Monad/Indexed.hs view
@@ -9,30 +9,30 @@ -- Portability : portable -- -----------------------------------------------------------------------------module Control.Monad.Indexed - ( IxFunctor(..)- , IxPointed(..)- , IxApplicative(..)- , IxMonad(..)- , IxMonadZero(..)- , IxMonadPlus(..)- , ijoin, (>>>=), (=<<<)- , iapIxMonad- ) where+module Control.Monad.Indexed+ ( IxFunctor(..)+ , IxPointed(..)+ , IxApplicative(..)+ , IxMonad(..)+ , IxMonadZero(..)+ , IxMonadPlus(..)+ , ijoin, (>>>=), (=<<<)+ , iapIxMonad+ ) where import Data.Functor.Indexed class IxApplicative m => IxMonad m where- ibind :: (a -> m j k b) -> m i j a -> m i k b+ ibind :: (a -> m j k b) -> m i j a -> m i k b -ijoin :: IxMonad m => m i j (m j k a) -> m i k a +ijoin :: IxMonad m => m i j (m j k a) -> m i k a ijoin = ibind id infixr 1 =<<< infixl 1 >>>= (>>>=) :: IxMonad m => m i j a -> (a -> m j k b) -> m i k b-m >>>= k = ibind k m +m >>>= k = ibind k m (=<<<) :: IxMonad m => (a -> m j k b) -> m i j a -> m i k b (=<<<) = ibind@@ -41,7 +41,7 @@ iapIxMonad f x = f >>>= \ f' -> x >>>= \x' -> ireturn (f' x') class IxMonad m => IxMonadZero m where- imzero :: m i j a+ imzero :: m i j a class IxMonadZero m => IxMonadPlus m where- implus :: m i j a -> m i j a -> m i j a+ implus :: m i j a -> m i j a -> m i j a
Control/Monad/Indexed/Fix.hs view
@@ -10,11 +10,11 @@ -- ---------------------------------------------------------------------------- module Control.Monad.Indexed.Fix- ( IxMonadFix(..)- ) where+ ( IxMonadFix(..)+ ) where import Control.Monad.Indexed class IxMonad m => IxMonadFix m where- imfix :: (a -> m i i a) -> m i i a+ imfix :: (a -> m i i a) -> m i i a
Control/Monad/Indexed/Trans.hs view
@@ -5,14 +5,14 @@ -- License : BSD-style (see the file LICENSE) -- -- Maintainer : Reiner Pope <reiner.pope@gmail.com>--- Stability : experimental +-- Stability : experimental -- Portability : portable ----- TODO: figure out a meaningful way for indexed monads to transform indexed +-- TODO: figure out a meaningful way for indexed monads to transform indexed -- monads ---------------------------------------------------------------------------- module Control.Monad.Indexed.Trans where class IxMonadTrans t where- ilift :: Monad m => m a -> t m i i a + ilift :: Monad m => m a -> t m i i a
Data/Functor/Indexed.hs view
@@ -9,24 +9,47 @@ -- Portability : portable -- -----------------------------------------------------------------------------module Data.Functor.Indexed - ( IxFunctor(..)- , IxCopointed(..)- , IxPointed(..)- , IxApplicative(..)- ) where+module Data.Functor.Indexed+ ( IxFunctor(..)+ , IxCopointed(..)+ , IxPointed(..)+ , IxApplicative(..)+ , (<<$>>), (<<*>>), (<<*), (*>>)+ ) where class IxFunctor f where- imap :: (a -> b) -> f j k a -> f j k b+ imap :: (a -> b) -> f j k a -> f j k b +-- | Infix alias of 'imap'. Or, ('<$>') for 'IxFunctor'. Should be+-- interchangeable with ('<$>'), but requires 'IxFunctor' constraints instead+-- of (possibly many) 'Functor' constraints.+infixl 4 <<$>>+(<<$>>) :: IxFunctor f => (a -> b) -> f j k a -> f j k b+(<<$>>) = imap+ class IxPointed m => IxApplicative m where- iap :: m i j (a -> b) -> m j k a -> m i k b+ iap :: m i j (a -> b) -> m j k a -> m i k b +-- | Infix alias of 'iap'. Or, ('<*>') for 'IxApplicative'.+infixl 4 <<*>>+(<<*>>) :: IxApplicative f => f i j (a -> b) -> f j k a -> f i k b+(<<*>>) = iap++-- | ('Control.Applicative.<*') for 'IxApplicative'.+infixl 4 <<*+(<<*) :: IxApplicative f => f i j a -> f j k b -> f i k a+(<<*) a b = imap const a <<*>> b++-- | ('Control.Applicative.*>') for 'IxApplicative'.+infixl 4 *>>+(*>>) :: IxApplicative f => f i j a -> f j k b -> f i k b+(*>>) a b = imap (const id) a <<*>> b+ class IxFunctor m => IxPointed m where- ireturn :: a -> m i i a+ ireturn :: a -> m i i a class IxFunctor w => IxCopointed w where- iextract :: w i i a -> a+ iextract :: w i i a -> a {-# RULES "iextract/ireturn" iextract . ireturn = id
indexed.cabal view
@@ -1,5 +1,5 @@ Name: indexed-Version: 0.1+Version: 0.1.1 Synopsis: Haskell98 indexed functors, monads, comonads Description: Haskell98 indexed functors, monads, comonads License: BSD3