packages feed

cofunctor (empty) → 0.1.0

raw patch · 4 files changed

+120/−0 lines, 4 filesdep +basesetup-changed

Dependencies added: base

Files

+ Data/Cofunctor.lhs view
@@ -0,0 +1,36 @@+> module Data.Cofunctor (+>     Cofunctor(..)+> ) where+>+> {- |+> The Confunctor class is useful for \"sink-like\" types, especially when+> combined with GADTs. For instance:+>+> > {-# LANGUAGE GADTs #-}+> > data StringStack a where+> >     StringStack :: (a -> String) -> [String] -> StringStack a+> >+> > emptyStack :: StringStack String+> > emptyStack = StringStack id []+> >+> > push :: a -> StringStack a -> StringStack a+> > push a (StringStack f ss) = StringStack f (f s : ss)+> >+> > instance Confunctor StringStack where+> >     cofmap f (StringStack g ss) = StringStack (g . f) ss+>+> See the "split-chan" package for another example.+> -}++Hopefully we'll have some more interesting supporting functions, classes and+instances here that will make this more useful and perhaps express some+relations with Functors.++> -- | A class for contravariant functors+> class Cofunctor f where+>     cofmap :: (b -> a) -> f a -> f b++To Consider:+    - lift product type from Data.Functor.Product to sum type (Either)+    - make instance for wrapped Category with flipped vars+    - ...
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c)2011, Brandon Simmons++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 Brandon Simmons 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
+ cofunctor.cabal view
@@ -0,0 +1,52 @@+-- cofunctor.cabal auto-generated by cabal init. For additional+-- options, see+-- http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/authors.html#pkg-descr.+-- The name of the package.+Name:                cofunctor++Version:             0.1.0++Synopsis:            A small library providing a contravariant functor class++Description:         This library provides a 'Cofunctor' class useful for types+                     that are sinks or make use of IO effects. See documentation +                     for details.++                     Some supporting constructions are also provided.++License:             BSD3++License-file:        LICENSE++Author:              Brandon Simmons++Maintainer:          brandon.m.simmons@gmail.com++Category:            Data++Build-type:          Simple++-- Extra files to be distributed with the package, such as examples or+-- a README.+-- Extra-source-files:  ++-- Constraint on the version of Cabal needed to build this package.+Cabal-version:       >=1.6++source-repository head   +    type:     git+    location: https://github.com/jberryman/cofunctor.git++Library+  -- Modules exported by the library.+  Exposed-modules:     Data.Cofunctor+  +  -- Packages needed in order to build this package.+  Build-depends:       base >= 4 && < 5+  +  -- Modules not exported by this package.+  -- Other-modules:       +  +  -- Extra tools (e.g. alex, hsc2hs, ...) needed to build the source.+  -- Build-tools:         +