packages feed

sequence 0.9.4 → 0.9.5

raw patch · 5 files changed

+49/−12 lines, 5 filesdep +transformers

Dependencies added: transformers

Files

ChangeLog view
@@ -1,3 +1,4 @@+0.9.5: Added traversable instances (thanks dolio!) 0.9.4: More fixing docs 0.9.3: Fix docs 0.9.2: Fix error in cabal file
Data/Sequence/FastQueue.hs view
@@ -18,11 +18,13 @@ -----------------------------------------------------------------------------  module Data.Sequence.FastQueue(module Data.SequenceClass, FastQueue) where+import Control.Applicative (pure, (<$>), (<*>))+import Control.Applicative.Backwards import Data.SequenceClass import Data.Foldable+import Data.Traversable import Prelude hiding (foldr,foldl) - revAppend l r = rotate l r [] -- precondtion : |a| = |f| - (|r| - 1) -- postcondition: |a| = |f| - |r|@@ -60,4 +62,9 @@  viewl (RQ [] [] []) = EmptyL  viewl (RQ (h : t) f a) = h :< queue t f a +instance Traversable FastQueue where+  sequenceA q = case viewl q of+     EmptyL -> pure empty+     h :< t  -> (<|) <$> h <*> sequenceA t+    
Data/Sequence/Queue.hs view
@@ -20,7 +20,10 @@ -- ----------------------------------------------------------------------------- module Data.Sequence.Queue(module Data.SequenceClass,Queue)  where+import Control.Applicative (pure, (<*>), (<$>)) import Data.Foldable+import Data.Monoid ((<>))+import Data.Traversable import Prelude hiding (foldr,foldl) import Data.SequenceClass @@ -29,6 +32,14 @@ instance Functor P where   fmap f (a :* b) = f a :* f b +instance Foldable P where+  foldl f z (a :* b) = f (f z a) b+  foldr f z (a :* b) = f a (f b z)+  foldMap f (a :* b) = f a <> f b++instance Traversable P where+  traverse f (a :* b) = (:*) <$> f a <*> f b+ data B a where   B1 :: a    -> B a   B2 :: !(P a)  -> B a@@ -37,6 +48,18 @@  fmap phi (B1 c) = B1 (phi c)  fmap phi (B2 p) = B2 (fmap phi p) +instance Foldable B where+  foldl f z (B1 x) = f z x+  foldl f z (B2 p) = foldl f z p+  foldr f z (B1 x) = f x z+  foldr f z (B2 p) = foldr f z p+  foldMap f (B1 x) = f x+  foldMap f (B2 p) = foldMap f p++instance Traversable B where+  traverse f (B1 x) = B1 <$> f x+  traverse f (B2 p) = B2 <$> traverse f p+ data Queue a  where   Q0 :: Queue a    Q1 :: a  -> Queue a@@ -56,6 +79,11 @@     where toRevList s = case viewl s of            EmptyL -> []            h :< t -> h : toRevList t++instance Traversable Queue where+  traverse f Q0 = pure Q0+  traverse f (Q1 x) = Q1 <$> f x+  traverse f (QN b1 q b2) = QN <$> traverse f b1 <*> traverse (traverse f) q <*> traverse f b2  instance Sequence Queue where   empty = Q0
Data/Sequence/ToCatQueue.hs view
@@ -20,7 +20,9 @@ -----------------------------------------------------------------------------  module Data.Sequence.ToCatQueue(module Data.SequenceClass,ToCatQueue) where+import Control.Applicative (pure, (<*>), (<$>)) import Data.Foldable+import Data.Traversable import Prelude hiding (foldr,foldl) import Data.SequenceClass @@ -34,15 +36,11 @@   fmap f C0 = C0   fmap f (CN l m) = CN (f l) (fmap (fmap f) m) -instance Sequence q => Foldable (ToCatQueue q) where-  foldl f = loop where-    loop i s = case viewl s of-          EmptyL -> i-          h :< t -> loop (f i h) t-  foldr f i s = foldr f i (reverse $ toRevList s)-    where toRevList s = case viewl s of-           EmptyL -> []-           h :< t -> h : toRevList t+instance Foldable q => Foldable (ToCatQueue q) where+  foldl f z C0 = z+  foldl f z (CN x qs) = foldl (foldl f) (f z x) qs+  foldr f z C0 = z+  foldr f z (CN x qs) = x `f` foldr (\q z -> foldr f z q) z qs  instance Sequence q => Sequence (ToCatQueue q) where  empty       = C0@@ -61,3 +59,6 @@     snoc q C0  = q     snoc q r   = q |> r +instance Traversable q => Traversable (ToCatQueue q) where+  traverse f C0 = pure C0+  traverse f (CN x qs) = CN <$> f x <*> traverse (traverse f) qs
sequence.cabal view
@@ -1,5 +1,5 @@ Name:                sequence-Version:             0.9.4+Version:             0.9.5 Synopsis:	         A type class for sequences and various sequence data structures. Description:         A type class for sequences and various sequence data structures. License:             BSD3@@ -13,7 +13,7 @@ Category:            Data, Data Structures Tested-With:         GHC==7.6.3 Library-  Build-Depends: base >= 2 && <= 6, containers+  Build-Depends: base >= 2 && <= 6, containers, transformers   Exposed-modules: Data.SequenceClass, Data.Sequence.Queue, Data.Sequence.FastQueue, Data.Sequence.FastCatQueue,  Data.Sequence.ToCatQueue   Extensions: