packages feed

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 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