packages feed

gencheck 0.1 → 0.1.1

raw patch · 2 files changed

+21/−27 lines, 2 filesdep ~base

Dependency ranges changed: base

Files

Test/GenCheck/Base/LabelledPartition.lhs view
@@ -22,7 +22,6 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE TypeFamilies #-}  module Test.GenCheck.Base.LabelledPartition  ( LabelledPartition(..)@@ -36,8 +35,6 @@ import Data.Monoid import qualified Data.Foldable as Fold -import Test.GenCheck.Base.Verdict(Verdict())- \end{code}  The LabelledPartition class is parameterized over:@@ -67,28 +64,24 @@  \begin{code} -class Verdict v => Labelled v where-  type Label v-  label :: v -> Label v--class (Fold.Foldable c, Verdict v, Labelled v) => LabelledPartition c v where-  empty   :: c v-  new     :: [v] -> c v-  size    :: c v -> Int-  insert  :: (Ord k) => k -> v -> c v -> c v-  lookup  :: (Ord k) => k -> c v -> Maybe v  -  merge   :: (Monoid v) => c v -> c v -> c v-  -- map     :: (Ord k) => (k -> v -> r) -> c (v a) -> c (v r)-  -- map f   = fold (\k x lys -> insert k (f k x) lys) empty-  fold    :: (k -> v -> b -> b) -> b -> c v -> b-  toList  :: c v -> [(k, v)]+class (Fold.Foldable (c k), Functor v) => LabelledPartition c k v where+  empty   :: c k (v a)+  new     :: (Ord k) => k -> [a] -> c k (v a)+  size    :: c k (v a) -> Int+  insert  :: (Ord k) => k -> a -> c k (v a) -> c k (v a)+  lookup  :: (Ord k) => k -> c k (v a) -> Maybe (v a)  +  merge   :: (Ord k, Monoid (v a)) => c k (v a) -> c k (v a) -> c k (v a)+  map     :: (Ord k) => (k -> a -> r) -> c k (v a) -> c k (v r)+  map f   = fold (\k x lys -> insert k (f k x) lys) empty+  fold    :: (k -> a -> b -> b) -> b -> c k (v a) -> b+  toList  :: c k (v a) -> [(k, v a)] -instance (Fold.Foldable c, Monoid v) => Monoid (c v) where+instance (LabelledPartition c k v, Ord k, Monoid (v r)) => Monoid (c k (v r)) where   mempty  = empty   mappend = merge -fromList :: (Ord k, LabelledPartition c v, Monoid v) => -    [(k,[v])] -> c v+fromList :: (LabelledPartition c k v, Ord k, Monoid (v a)) => +    [(k,[a])] -> c k (v a) fromList = Fold.foldr (\(k,ys) -> merge (new k ys)) empty  \end{code}@@ -102,11 +95,12 @@ \end{description}  \begin{code}-relabel :: (Ord k', LabelledPartition c v) => (k -> v -> k') -> c v-> c v+relabel :: (LabelledPartition c k v, LabelledPartition c k' v, Ord k') => +    (k -> a -> k') -> c k (v a)-> c k' (v a) relabel f cxs = fold (\k x -> insert (f k x) x) empty cxs -filter :: (LabelledPartition c v, Ord k) =>-    (k -> v -> Bool) -> c v -> c v+filter :: (LabelledPartition c k v, Ord k) => +    (k -> a -> Bool) -> c k (v a) -> c k (v a) filter p cxs = fold cp empty cxs where   cp k x ys = if (p k x) then insert k x ys else ys @@ -121,9 +115,9 @@  \begin{code} -instance Ord k => LabelledPartition (Map k) a where+instance (Ord k) => LabelledPartition Map k [] where   empty      = Map.empty-  new k xs   = Map.fromList xs+  new k xs   = Map.fromList [(k,xs)]   size       = Map.fold (\xs s -> (length xs) + s) 0   insert k x = Map.insertWith mappend k [x]   lookup     = Map.lookup
gencheck.cabal view
@@ -1,5 +1,5 @@ name:           gencheck-version:        0.1+version:        0.1.1 cabal-version:  >= 1.6 license:        BSD3 license-file:   License.txt