packages feed

constraint-classes 0.3.0 → 0.4.0

raw patch · 2 files changed

+119/−38 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Control.ConstraintClasses: type CFol f a = ();
- Control.ConstraintClasses: type CFun f a = ();
+ Control.ConstraintClasses: (!) :: (CIndexed f i, Con f a) => f a -> i -> a
+ Control.ConstraintClasses: _concatMap :: (CMonad f, Con f a, Con f b) => (a -> f b) -> f a -> f b
+ Control.ConstraintClasses: _liftA2 :: (CApplicative f, Con f a, Con f b, Con f c) => (a -> b -> c) -> f a -> f b -> f c
+ Control.ConstraintClasses: _liftA3 :: (CApplicative f, Con f a, Con f b, Con f c, Con f d) => (a -> b -> c -> d) -> f a -> f b -> f c -> f d
+ Control.ConstraintClasses: _liftA4 :: (CApplicative f, Con f a, Con f b, Con f c, Con f d, Con f e) => (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f e
+ Control.ConstraintClasses: _pure :: (CApplicative f, Con f a) => a -> f a
+ Control.ConstraintClasses: _traverse :: (CTraversable t, Con t a, Con t b, Monad f) => (a -> f b) -> t a -> f (t b)
+ Control.ConstraintClasses: _zipWith :: (CZippable f, Con f a, Con f b, Con f c) => (a -> b -> c) -> f a -> f b -> f c
+ Control.ConstraintClasses: _zipWith3 :: (CZippable f, Con f a, Con f b, Con f c, Con f d) => (a -> b -> c -> d) -> f a -> f b -> f c -> f d
+ Control.ConstraintClasses: _zipWith4 :: (CZippable f, Con f a, Con f b, Con f c, Con f d, Con f e) => (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f e
+ Control.ConstraintClasses: class CFunctor f => CApplicative f
+ Control.ConstraintClasses: class CFunctor f => CIndexed f i | f -> i
+ Control.ConstraintClasses: class CApplicative f => CMonad f
+ Control.ConstraintClasses: class (CFunctor t, CFoldable t) => CTraversable t
+ Control.ConstraintClasses: class CFunctor f => CZippable f
+ Control.ConstraintClasses: type Con f a = ();
- Control.ConstraintClasses: _fmap :: (CFunctor f, CFun f a, CFun f b) => (a -> b) -> f a -> f b
+ Control.ConstraintClasses: _fmap :: (CFunctor f, Con f a, Con f b) => (a -> b) -> f a -> f b
- Control.ConstraintClasses: _fold :: (CFoldable f, CFol f m, Monoid m) => f m -> m
+ Control.ConstraintClasses: _fold :: (CFoldable f, Con f m, Monoid m) => f m -> m
- Control.ConstraintClasses: _foldMap :: (CFoldable f, CFol f a, CFol f m, Monoid m) => (a -> m) -> f a -> m
+ Control.ConstraintClasses: _foldMap :: (CFoldable f, Con f a, Con f m, Monoid m) => (a -> m) -> f a -> m
- Control.ConstraintClasses: _foldl :: (CFoldable f, CFol f b) => (a -> b -> a) -> a -> f b -> a
+ Control.ConstraintClasses: _foldl :: (CFoldable f, Con f b) => (a -> b -> a) -> a -> f b -> a
- Control.ConstraintClasses: _foldl' :: (CFoldable f, CFol f b) => (a -> b -> a) -> a -> f b -> a
+ Control.ConstraintClasses: _foldl' :: (CFoldable f, Con f b) => (a -> b -> a) -> a -> f b -> a
- Control.ConstraintClasses: _foldr :: (CFoldable f, CFol f a) => (a -> b -> b) -> b -> f a -> b
+ Control.ConstraintClasses: _foldr :: (CFoldable f, Con f a) => (a -> b -> b) -> b -> f a -> b
- Control.ConstraintClasses: _foldr' :: (CFoldable f, CFol f a) => (a -> b -> b) -> b -> f a -> b
+ Control.ConstraintClasses: _foldr' :: (CFoldable f, Con f a) => (a -> b -> b) -> b -> f a -> b
- Control.ConstraintClasses: _forM :: (CFoldable f, Monad m, CFol f a, CFol f b) => f a -> (a -> m b) -> m (f b)
+ Control.ConstraintClasses: _forM :: (CFoldable f, Monad m, Con f a, Con f b) => f a -> (a -> m b) -> m (f b)
- Control.ConstraintClasses: _forM_ :: (CFoldable f, Monad m, CFol f a) => f a -> (a -> m b) -> m ()
+ Control.ConstraintClasses: _forM_ :: (CFoldable f, Monad m, Con f a) => f a -> (a -> m b) -> m ()
- Control.ConstraintClasses: _length :: (CFoldable f, CFol f a) => f a -> Int
+ Control.ConstraintClasses: _length :: (CFoldable f, Con f a) => f a -> Int
- Control.ConstraintClasses: _mapM :: (CFoldable f, Monad m, CFol f a, CFol f b) => (a -> m b) -> f a -> m (f b)
+ Control.ConstraintClasses: _mapM :: (CFoldable f, Monad m, Con f a, Con f b) => (a -> m b) -> f a -> m (f b)
- Control.ConstraintClasses: _mapM_ :: (CFoldable f, Monad m, CFol f a) => (a -> m b) -> f a -> m ()
+ Control.ConstraintClasses: _mapM_ :: (CFoldable f, Monad m, Con f a) => (a -> m b) -> f a -> m ()
- Control.ConstraintClasses: class CFoldable f where type CFol f a :: Constraint type CFol f a = () _fold = _foldMap id _foldMap f = _foldr (mappend . f) mempty _length = _foldl (\ c _ -> c + 1) 0 _forM = flip _mapM _forM_ = flip _mapM_ where {
+ Control.ConstraintClasses: class CFoldable f where _fold = _foldMap id _foldMap f = _foldr (mappend . f) mempty _length = _foldl (\ c _ -> c + 1) 0 _forM = flip _mapM _forM_ = flip _mapM_
- Control.ConstraintClasses: class CFunctor f where type CFun f a :: Constraint type CFun f a = () where {
+ Control.ConstraintClasses: class CFunctor f where type Con f a :: Constraint type Con f a = () where {
- Control.ConstraintClasses: type family CFol f a :: Constraint;
+ Control.ConstraintClasses: type family Con f a :: Constraint;

Files

constraint-classes.cabal view
@@ -1,22 +1,40 @@-name:                constraint-classes-version:             0.3.0-synopsis:            Prelude classes using ConstraintKinds-description:         Please see README.org-homepage:            http://github.com/guaraqe/constraint-classes#readme-license:             BSD3-license-file:        LICENSE-author:              guaraqe-maintainer:          guaraqe@openmailbox.org-copyright:           2016 guaraqe-build-type:          Simple-cabal-version:       >=1.10+name:+  constraint-classes+version:+  0.4.0+synopsis:+  Prelude classes using ConstraintKinds+description:+  Please see README.md+homepage:+  http://github.com/guaraqe/constraint-classes#readme+license:+  BSD3+license-file:+  LICENSE+author:+  guaraqe+maintainer:+  guaraqe@openmailbox.org+copyright:+  2016 guaraqe+build-type:+  Simple+cabal-version:+  >=1.10  library-  hs-source-dirs:      src-  exposed-modules:     Control.ConstraintClasses-  build-depends:       base >= 4.7 && < 5-  default-language:    Haskell2010+  hs-source-dirs:+    src+  exposed-modules:+    Control.ConstraintClasses+  build-depends:+    base >= 4.7 && < 5+  default-language:+    Haskell2010  source-repository head-  type:     git-  location: https://github.com/guaraqe/constraint-classes+  type:+    git+  location:+    https://github.com/guaraqe/constraint-classes
src/Control/ConstraintClasses.hs view
@@ -1,51 +1,114 @@ {-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE TypeFamilies    #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE FunctionalDependencies #-}  module Control.ConstraintClasses-       ( CFunctor     (..)-       , CFoldable    (..) ) where+  ( CFunctor (..)+  , CApplicative (..)+  , CMonad (..)+  , CFoldable (..)+  , CTraversable (..)+  , CZippable (..)+  , CIndexed (..)+  ) where  import GHC.Exts (Constraint)  ----------------------------------------------------------------------  class CFunctor f where-  type CFun f a :: Constraint-  type CFun f a = ()+  type Con f a :: Constraint+  type Con f a = () -  _fmap :: (CFun f a, CFun f b) => (a -> b) -> f a -> f b+  _fmap :: (Con f a, Con f b) => (a -> b) -> f a -> f b  ---------------------------------------------------------------------- -class CFoldable f where+class CFunctor f => CApplicative f where -  type CFol f a :: Constraint-  type CFol f a = ()+  _pure :: (Con f a) => a -> f a -  _foldr  :: (CFol f a) => (a -> b -> b) -> b -> f a -> b-  _foldr' :: (CFol f a) => (a -> b -> b) -> b -> f a -> b-  _foldl  :: (CFol f b) => (a -> b -> a) -> a -> f b -> a-  _foldl' :: (CFol f b) => (a -> b -> a) -> a -> f b -> a+  _liftA2 ::+    (Con f a, Con f b, Con f c) =>+    (a -> b -> c) -> f a -> f b -> f c -  _fold :: (CFol f m, Monoid m) => f m -> m+  _liftA3 ::+    (Con f a, Con f b, Con f c, Con f d) =>+    (a -> b -> c -> d) -> f a -> f b -> f c -> f d++  _liftA4 ::+    (Con f a, Con f b, Con f c, Con f d, Con f e) =>+    (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f e++----------------------------------------------------------------------++class CApplicative f => CMonad f where++  _concatMap ::+    (Con f a, Con f b) =>+    (a -> f b) -> f a -> f b++----------------------------------------------------------------------++class CFoldable f where+  {-# MINIMAL _foldMap | _foldr #-}++  _foldr  :: (Con f a) => (a -> b -> b) -> b -> f a -> b+  _foldr' :: (Con f a) => (a -> b -> b) -> b -> f a -> b+  _foldl  :: (Con f b) => (a -> b -> a) -> a -> f b -> a+  _foldl' :: (Con f b) => (a -> b -> a) -> a -> f b -> a++  _fold :: (Con f m, Monoid m) => f m -> m   _fold = _foldMap id -  _foldMap :: (CFol f a, CFol f m, Monoid m) => (a -> m) -> f a -> m+  _foldMap :: (Con f a, Con f m, Monoid m) => (a -> m) -> f a -> m   _foldMap f = _foldr (mappend . f) mempty+  {-# INLINE _foldMap #-} -  _length :: CFol f a => f a -> Int+  _length :: Con f a => f a -> Int   _length = _foldl (\c _ -> c+1) 0 -  _mapM :: (Monad m, CFol f a, CFol f b)+  _mapM :: (Monad m, Con f a, Con f b)         => (a -> m b) -> f a -> m (f b) -  _forM :: (Monad m, CFol f a, CFol f b)+  _forM :: (Monad m, Con f a, Con f b)         => f a -> (a -> m b) -> m (f b)   _forM = flip _mapM -  _mapM_ :: (Monad m, CFol f a)+  _mapM_ :: (Monad m, Con f a)          => (a -> m b) -> f a -> m () -  _forM_ :: (Monad m, CFol f a)+  _forM_ :: (Monad m, Con f a)          => f a -> (a -> m b) -> m ()   _forM_ = flip _mapM_++----------------------------------------------------------------------++class (CFunctor t, CFoldable t) => CTraversable t where++  _traverse ::+    (Con t a, Con t b, Monad f) =>+    (a -> f b) -> t a -> f (t b)++----------------------------------------------------------------------++class CFunctor f => CZippable f where++  _zipWith ::+    (Con f a, Con f b, Con f c) =>+    (a -> b -> c) -> f a -> f b -> f c++  _zipWith3 ::+    (Con f a, Con f b, Con f c, Con f d) =>+    (a -> b -> c -> d) -> f a -> f b -> f c -> f d++  _zipWith4 ::+    (Con f a, Con f b, Con f c, Con f d, Con f e) =>+    (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f e++----------------------------------------------------------------------++class CFunctor f => CIndexed f i | f -> i where++  (!) :: (Con f a) => f a -> i -> a