From 9a550e59923bd6d7ecb12741e60f16cb90b6a7f5 Mon Sep 17 00:00:00 2001 From: Andrew Martin Date: Wed, 7 Sep 2016 21:32:53 -0400 Subject: [PATCH] correct direction of foldlMap --- colonnade/colonnade.cabal | 2 +- colonnade/src/Colonnade/Encoding.hs | 2 +- colonnade/src/Colonnade/Internal.hs | 6 +++--- reflex-dom-colonnade/reflex-dom-colonnade.cabal | 4 ++-- reflex-dom-colonnade/src/Reflex/Dom/Colonnade.hs | 11 +++++++---- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/colonnade/colonnade.cabal b/colonnade/colonnade.cabal index 3cb07b4..1d024ab 100644 --- a/colonnade/colonnade.cabal +++ b/colonnade/colonnade.cabal @@ -1,5 +1,5 @@ name: colonnade -version: 0.4.1 +version: 0.4.4 synopsis: Generic types and functions for columnar encoding and decoding description: Please see README.md homepage: https://github.com/andrewthad/colonnade#readme diff --git a/colonnade/src/Colonnade/Encoding.hs b/colonnade/src/Colonnade/Encoding.hs index c8055a2..87fab4f 100644 --- a/colonnade/src/Colonnade/Encoding.hs +++ b/colonnade/src/Colonnade/Encoding.hs @@ -32,7 +32,7 @@ runRowMonadic :: (Monad m, Monoid b) -> a -> m b runRowMonadic (Encoding v) g a = - flip Internal.foldMapM v + flip Internal.foldlMapM v $ \e -> g (oneEncodingEncode e a) runRowMonadicWith :: (Monad m) diff --git a/colonnade/src/Colonnade/Internal.hs b/colonnade/src/Colonnade/Internal.hs index e86577b..58d5335 100644 --- a/colonnade/src/Colonnade/Internal.hs +++ b/colonnade/src/Colonnade/Internal.hs @@ -1,7 +1,7 @@ {-# LANGUAGE DeriveFunctor #-} module Colonnade.Internal where -import Data.Foldable (foldrM) +import Data.Foldable (foldrM,foldlM) newtype EitherWrap a b = EitherWrap { getEitherWrap :: Either a b @@ -18,6 +18,6 @@ mapLeft :: (a -> b) -> Either a c -> Either b c mapLeft _ (Right a) = Right a mapLeft f (Left a) = Left (f a) -foldMapM :: (Foldable t, Monoid b, Monad m) => (a -> m b) -> t a -> m b -foldMapM f = foldrM (\a b -> fmap (flip mappend b) (f a)) mempty +foldlMapM :: (Foldable t, Monoid b, Monad m) => (a -> m b) -> t a -> m b +foldlMapM f = foldlM (\b a -> fmap (mappend b) (f a)) mempty diff --git a/reflex-dom-colonnade/reflex-dom-colonnade.cabal b/reflex-dom-colonnade/reflex-dom-colonnade.cabal index b6e11b8..3bf08d8 100644 --- a/reflex-dom-colonnade/reflex-dom-colonnade.cabal +++ b/reflex-dom-colonnade/reflex-dom-colonnade.cabal @@ -1,5 +1,5 @@ name: reflex-dom-colonnade -version: 0.4.3 +version: 0.4.4 synopsis: Use colonnade with reflex-dom description: Please see README.md homepage: https://github.com/andrewthad/colonnade#readme @@ -18,7 +18,7 @@ library Reflex.Dom.Colonnade build-depends: base >= 4.7 && < 5 - , colonnade >= 0.4.1 + , colonnade >= 0.4.4 , contravariant , vector , reflex diff --git a/reflex-dom-colonnade/src/Reflex/Dom/Colonnade.hs b/reflex-dom-colonnade/src/Reflex/Dom/Colonnade.hs index a83e439..f9e5725 100644 --- a/reflex-dom-colonnade/src/Reflex/Dom/Colonnade.hs +++ b/reflex-dom-colonnade/src/Reflex/Dom/Colonnade.hs @@ -124,8 +124,8 @@ dynamicEventful :: (MonadWidget t m, Foldable f, Semigroup e) dynamicEventful tableAttrs as encoding@(Encoding v) = do elAttr "table" tableAttrs $ do b1 <- theadBuild encoding - b2 <- el "tbody" $ flip foldMapM as $ \a -> do - el "tr" $ flip foldMapM v $ \(OneEncoding _ encode) -> do + b2 <- el "tbody" $ flip foldlMapM as $ \a -> do + el "tr" $ flip foldlMapM v $ \(OneEncoding _ encode) -> do dynPair <- mapDyn encode a dynAttrs <- mapDyn cellAttrs dynPair dynContent <- mapDyn cellContents dynPair @@ -134,8 +134,11 @@ dynamicEventful tableAttrs as encoding@(Encoding v) = do switchPromptly never e return (mappend b1 b2) -foldMapM :: (Foldable t, Monoid b, Monad m) => (a -> m b) -> t a -> m b -foldMapM f = foldrM (\a b -> fmap (flip mappend b) (f a)) mempty +-- foldMapM :: (Foldable t, Monoid b, Monad m) => (a -> m b) -> t a -> m b +-- foldMapM f = foldlM (\b a -> fmap (flip mappend b) (f a)) mempty + +foldlMapM :: (Foldable t, Monoid b, Monad m) => (a -> m b) -> t a -> m b +foldlMapM f = foldlM (\b a -> fmap (mappend b) (f a)) mempty foldAlternativeM :: (Foldable t, Monoid b, Monad m) => (a -> m b) -> t a -> m b foldAlternativeM f = foldrM (\a b -> fmap (flip mappend b) (f a)) mempty