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 +20/−26
- gencheck.cabal +1/−1
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