packages feed

constraint-classes (empty) → 0.1.0

raw patch · 5 files changed

+134/−0 lines, 5 filesdep +basesetup-changed

Dependencies added: base

Files

+ LICENSE view
@@ -0,0 +1,30 @@+Copyright guaraqe (c) 2016++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of guaraqe nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ constraint-classes.cabal view
@@ -0,0 +1,23 @@+name:                constraint-classes+version:             0.1.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++library+  hs-source-dirs:      src+  exposed-modules:     Control.ConstraintClasses+                     , Control.ConstraintClasses.Extras+  build-depends:       base >= 4.7 && < 5+  default-language:    Haskell2010++source-repository head+  type:     git+  location: https://github.com/guaraqe/constraint-classes
+ src/Control/ConstraintClasses.hs view
@@ -0,0 +1,51 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE TypeFamilies    #-}++module Control.ConstraintClasses+       ( CFunctor     (..)+       , CFoldable    (..) ) where++import GHC.Exts (Constraint)++----------------------------------------------------------------------++class CFunctor f where+  type CFun f a :: Constraint+  type CFun f a = ()++  cmap :: (CFun f a, CFun f b) => (a -> b) -> f a -> f b++----------------------------------------------------------------------++class CFoldable f where++  type CFol f a :: Constraint+  type CFol f a = ()++  cfoldr  :: (CFol f a) => (a -> b -> b) -> b -> f a -> b+  cfoldr' :: (CFol f a) => (a -> b -> b) -> b -> f a -> b+  cfoldl  :: (CFol f b) => (a -> b -> a) -> a -> f b -> a+  cfoldl' :: (CFol f b) => (a -> b -> a) -> a -> f b -> a++  cfold :: (CFol f m, Monoid m) => f m -> m+  cfold = cfoldMap id++  cfoldMap :: (CFol f a, CFol f m, Monoid m) => (a -> m) -> f a -> m+  cfoldMap f = cfoldr (mappend . f) mempty++  clength :: CFol f a => f a -> Int+  clength = cfoldl (\c _ -> c+1) 0++  cmapM :: (Monad m, CFol f a, CFol f b)+        => (a -> m b) -> f a -> m (f b)++  cforM :: (Monad m, CFol f a, CFol f b)+        => f a -> (a -> m b) -> m (f b)+  cforM = flip cmapM++  cmapM_ :: (Monad m, CFol f a)+         => (a -> m b) -> f a -> m ()++  cforM_ :: (Monad m, CFol f a)+         => f a -> (a -> m b) -> m ()+  cforM_ = flip cmapM_
+ src/Control/ConstraintClasses/Extras.hs view
@@ -0,0 +1,28 @@+module Control.ConstraintClasses.Extras+       ( CZippable (..) ) where++import Control.ConstraintClasses++class CFunctor f => CZippable f where+  czip :: (CFun f a, CFun f b, CFun f (a,b))+       => f a -> f b -> f (a,b)++  czipWith :: ( CFun f a+              , CFun f b+              , CFun f (a,b)+              , CFun f c)+          => (a -> b -> c) -> f a -> f b -> f c+  czipWith f x y = cmap (uncurry f) (czip x y)++  czipWith3 :: ( CFun f a+               , CFun f b+               , CFun f c+               , CFun f (a,b)+               , CFun f ((a,b),c)+               , CFun f d )+            => (a -> b -> c -> d) -> f a -> f b -> f c -> f d+  czipWith3 f x y z = cmap ((uncurry . uncurry) f)+                           (czip (czip x y) z)++  czipWith4 :: (CFun f a, CFun f b, CFun f c, CFun f d, CFun f e)+            => (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f e