-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Prelude classes using ConstraintKinds -- -- Please see README.org @package constraint-classes @version 0.2.0 module Control.ConstraintClasses class CFunctor f where type family CFun f a :: Constraint CFun f a = () cmap :: (CFunctor f, CFun f a, CFun f b) => (a -> b) -> f a -> f b class CFoldable f where type family CFol f a :: Constraint CFol f a = () cfold = cfoldMap id cfoldMap f = cfoldr (mappend . f) mempty clength = cfoldl (\ c _ -> c + 1) 0 cforM = flip cmapM cforM_ = flip cmapM_ cfoldr :: (CFoldable f, CFol f a) => (a -> b -> b) -> b -> f a -> b cfoldr' :: (CFoldable f, CFol f a) => (a -> b -> b) -> b -> f a -> b cfoldl :: (CFoldable f, CFol f b) => (a -> b -> a) -> a -> f b -> a cfoldl' :: (CFoldable f, CFol f b) => (a -> b -> a) -> a -> f b -> a cfold :: (CFoldable f, CFol f m, Monoid m) => f m -> m cfoldMap :: (CFoldable f, CFol f a, CFol f m, Monoid m) => (a -> m) -> f a -> m clength :: (CFoldable f, CFol f a) => f a -> Int cmapM :: (CFoldable f, Monad m, CFol f a, CFol f b) => (a -> m b) -> f a -> m (f b) cforM :: (CFoldable f, Monad m, CFol f a, CFol f b) => f a -> (a -> m b) -> m (f b) cmapM_ :: (CFoldable f, Monad m, CFol f a) => (a -> m b) -> f a -> m () cforM_ :: (CFoldable f, Monad m, CFol f a) => f a -> (a -> m b) -> m ()