From 132f05f0dac32691f120716daf8329ef61ec5458 Mon Sep 17 00:00:00 2001 From: rcannon Date: Mon, 11 Apr 2022 08:32:16 -0500 Subject: [PATCH 1/3] added seqBifunctor, sequential strategy for data types with bifunctor instance --- .Setup.hs.swp | Bin 0 -> 12288 bytes .parallel.cabal.swp | Bin 0 -> 12288 bytes Control/.Seq.hs.swp | Bin 0 -> 28672 bytes Control/Seq.hs | 7 +++++++ parallel.cabal | 1 + 5 files changed, 8 insertions(+) create mode 100644 .Setup.hs.swp create mode 100644 .parallel.cabal.swp create mode 100644 Control/.Seq.hs.swp diff --git a/.Setup.hs.swp b/.Setup.hs.swp new file mode 100644 index 0000000000000000000000000000000000000000..20309a56769ca8c76759a472bb1803af9af28b0d GIT binary patch literal 12288 zcmeI&y-ve05C`yU2R1$gVmGj~Ly}S!REdqHL&Xrm?li7qa6S~<>VO0A60<-|5g)R#jbvjn$)F z6xyiFnt1MQ8O`-f^V77hLhekga!>TIs7so*zEx9alS0}%WlUsrW|Ky?(imluR5{_PwnYYJ@B+3<7_nof?7#KHdcn*At;00bZa0SG_<0uX=z1U6Z~H642719X>% z*jmn=Kl3uh1OW&@00Izz00bZa0SG_<0uX?}1`5cW$nO%pa)kf?zu*5~oPTnBaJ+N8 zafF%|4h#rD00Izz00bZa0SG_<0uX=z1pY~&l)4fZB3Co%jhk>rKTD&L7+;BApGcQY l-8ylpt!s7Wo#xy3DK8qu*ZS++8zn-U=!L$%m=~&5^bL8yQ9J+u literal 0 HcmV?d00001 diff --git a/.parallel.cabal.swp b/.parallel.cabal.swp new file mode 100644 index 0000000000000000000000000000000000000000..71a1623a14fef8cf331e429693f5072c21cf6501 GIT binary patch literal 12288 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 VD@zm|8UJKa@>i3@3H+Bc{tH#eOZor+ literal 0 HcmV?d00001 diff --git a/Control/Seq.hs b/Control/Seq.hs index 13211ff..d7a81f4 100644 --- a/Control/Seq.hs +++ b/Control/Seq.hs @@ -39,6 +39,7 @@ module Control.Seq -- * Sequential strategies for foldable data types , seqFoldable -- :: Foldable t => Strategy a -> Strategy (t a) + , seqBifoldable -- :: Bifoldable p => Strategy a -> Stragety b -> Strategy (p a b) , seqMap -- :: Strategy k -> Strategy v -> Strategy (Map k v) , seqArray -- :: Ix i => Strategy a -> Strategy (Array i a) , seqArrayBounds -- :: Ix i => Strategy i -> Strategy (Array i a) @@ -64,6 +65,7 @@ import Data.Foldable (toList) #else import Data.Foldable (Foldable, toList) #endif +import Data.Bifoldable (Bifoldable (bifoldMap)) import Data.Map (Map) import qualified Data.Map (toList) #if !((__GLASGOW_HASKELL__ >= 711) && MIN_VERSION_array(0,5,1)) @@ -146,6 +148,11 @@ seqFoldable strat = seqList strat . toList {-# SPECIALISE seqFoldable :: Strategy a -> Strategy [a] #-} +-- | Evaluate the elements of a bifoldable data structure according to +-- the given strategy +seqBifoldable :: Bifoldable p => Strategy a -> Strategy b -> Strategy (p a b) +seqBifoldable = bifoldMap + -- | Evaluate the elements of an array according to the given strategy. -- Evaluation of the array bounds may be triggered as a side effect. #if (__GLASGOW_HASKELL__ >= 711) && MIN_VERSION_array(0,5,1) diff --git a/parallel.cabal b/parallel.cabal index d20d5b1..756cdf8 100644 --- a/parallel.cabal +++ b/parallel.cabal @@ -44,6 +44,7 @@ library build-depends: array >= 0.3 && < 0.6, base >= 4.3 && < 4.17, + bifunctor , containers >= 0.4 && < 0.7, deepseq >= 1.1 && < 1.5 From bde030a1eaa8223e202b34e36e4e2fdcbbcb37f8 Mon Sep 17 00:00:00 2001 From: rcannon Date: Mon, 11 Apr 2022 08:33:21 -0500 Subject: [PATCH 2/3] rm .swp files --- .Setup.hs.swp | Bin 12288 -> 0 bytes .parallel.cabal.swp | Bin 12288 -> 0 bytes Control/.Seq.hs.swp | Bin 28672 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .Setup.hs.swp delete mode 100644 .parallel.cabal.swp delete mode 100644 Control/.Seq.hs.swp diff --git a/.Setup.hs.swp b/.Setup.hs.swp deleted file mode 100644 index 20309a56769ca8c76759a472bb1803af9af28b0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&y-ve05C`yU2R1$gVmGj~Ly}S!REdqHL&Xrm?li7qa6S~<>VO0A60<-|5g)R#jbvjn$)F z6xyiFnt1MQ8O`-f^V77hLhekga!>TIs7so*zEx9alS0}%WlUsrW|Ky?(imluR5{_PwnYYJ@B+3<7_nof?7#KHdcn*At;00bZa0SG_<0uX=z1U6Z~H642719X>% z*jmn=Kl3uh1OW&@00Izz00bZa0SG_<0uX?}1`5cW$nO%pa)kf?zu*5~oPTnBaJ+N8 zafF%|4h#rD00Izz00bZa0SG_<0uX=z1pY~&l)4fZB3Co%jhk>rKTD&L7+;BApGcQY l-8ylpt!s7Wo#xy3DK8qu*ZS++8zn-U=!L$%m=~&5^bL8yQ9J+u diff --git a/.parallel.cabal.swp b/.parallel.cabal.swp deleted file mode 100644 index 71a1623a14fef8cf331e429693f5072c21cf6501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 VD@zm|8UJKa@>i3@3H+Bc{tH#eOZor+ From 95c014325ae02a1b0940a31680413e056796e8d1 Mon Sep 17 00:00:00 2001 From: rcannon Date: Mon, 11 Apr 2022 08:36:45 -0500 Subject: [PATCH 3/3] added seqBifoldable sequential strategy for data types with bifoldable instance, corrected typoes --- Control/Seq.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Control/Seq.hs b/Control/Seq.hs index d7a81f4..1fdf7bb 100644 --- a/Control/Seq.hs +++ b/Control/Seq.hs @@ -39,7 +39,7 @@ module Control.Seq -- * Sequential strategies for foldable data types , seqFoldable -- :: Foldable t => Strategy a -> Strategy (t a) - , seqBifoldable -- :: Bifoldable p => Strategy a -> Stragety b -> Strategy (p a b) + , seqBifoldable -- :: Bifoldable p => Strategy a -> Strategy b -> Strategy (p a b) , seqMap -- :: Strategy k -> Strategy v -> Strategy (Map k v) , seqArray -- :: Ix i => Strategy a -> Strategy (Array i a) , seqArrayBounds -- :: Ix i => Strategy i -> Strategy (Array i a)