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 +21/−0
- LICENSE +35/−0
- Setup.lhs +3/−0
- monoid-record.cabal +24/−0
+ 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