packages feed

monoid-record (empty) → 0.1

raw patch · 4 files changed

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

Dependencies added: base

Files

+ Data/Monoid/Record.hs view
@@ -0,0 +1,21 @@+{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances #-}+module Data.Monoid.Record where++import Data.Monoid                        ( Any(..), Last(..), Monoid(..) )++add :: Monoid m => (a -> m) -> (m -> a -> a) -> m -> a -> a+add getter setter x y = setter (getter y `mappend` x) y++class Monoid m => Wrapper m a | m -> a where+    wrap :: a -> m+    addP :: (b -> m) -> (m -> b -> b) -> a -> b -> b+    addP getter setter = add getter setter . wrap++instance Wrapper Any Bool where+    wrap = Any++instance Wrapper (Last a) a where+    wrap = Last . return++instance Wrapper [a] [a] where+    wrap = id
+ LICENSE view
@@ -0,0 +1,35 @@+Copyright (c) 2009, Robin Green+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 Robin Green 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.lhs view
@@ -0,0 +1,3 @@+#!/usr/bin/env runhaskell+> import Distribution.Simple+> main = defaultMain
+ monoid-record.cabal view
@@ -0,0 +1,24 @@+Name:          monoid-record+Version:       0.1+Cabal-version: >= 1.6+License:       BSD3+License-file:  LICENSE+Maintainer:    Robin Green <greenrd@greenrd.org>+Build-type:    Simple+Copyright:     2009 Robin Green+Category:      Data+Synopsis:      Support for modifying record fields of monoidal type+Description:   Small module with utility function and class for modifying record fields+               of a monoidal type.+Bug-reports:   mailto:greenrd@greenrd.org+Stability:     experimental+Tested-with:   GHC == 6.10.2++Source-repository head+    Type:      darcs+    Location:  http://patch-tag.com/publicrepos/monoid-record++Library+    Build-depends:   base+    Exposed-modules: Data.Monoid.Record+    GHC-options:     -Wall