diff options
author | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2011-02-07 16:01:09 +0100 |
---|---|---|
committer | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2011-02-07 16:01:09 +0100 |
commit | f56eb538b6e366202f796c84eee46e620f519ff6 (patch) | |
tree | 604126c23142bcd35c5451df38e52b9cdca9decc /src/Hakyll | |
parent | 986a74b3af664b824a5c67524d2433d7e990f502 (diff) | |
download | hakyll-f56eb538b6e366202f796c84eee46e620f519ff6.tar.gz |
Lazy pattern matching for compiler composition
Diffstat (limited to 'src/Hakyll')
-rw-r--r-- | src/Hakyll/Core/Compiler/Internal.hs | 2 | ||||
-rw-r--r-- | src/Hakyll/Core/Util/Arrow.hs | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/src/Hakyll/Core/Compiler/Internal.hs b/src/Hakyll/Core/Compiler/Internal.hs index 6737b6a..be78412 100644 --- a/src/Hakyll/Core/Compiler/Internal.hs +++ b/src/Hakyll/Core/Compiler/Internal.hs @@ -69,7 +69,7 @@ instance Applicative (Compiler a) where instance Category Compiler where id = Compiler (return S.empty) return - (Compiler d1 j1) . (Compiler d2 j2) = + ~(Compiler d1 j1) . ~(Compiler d2 j2) = Compiler (liftM2 S.union d1 d2) (j1 <=< j2) instance Arrow Compiler where diff --git a/src/Hakyll/Core/Util/Arrow.hs b/src/Hakyll/Core/Util/Arrow.hs index 49cbf2b..dfcb7da 100644 --- a/src/Hakyll/Core/Util/Arrow.hs +++ b/src/Hakyll/Core/Util/Arrow.hs @@ -7,6 +7,8 @@ module Hakyll.Core.Util.Arrow , mapA ) where +import Prelude hiding (id) +import Control.Category (id) import Control.Arrow ( Arrow, ArrowChoice, (&&&), arr, (>>^), (|||) , (>>>), (***) ) @@ -30,7 +32,7 @@ unitA = constA () mapA :: ArrowChoice a => a b c -> a [b] [c] -mapA f = arr listEither >>> arr id ||| (f *** mapA f >>> arr (uncurry (:))) +mapA f = arr listEither >>> id ||| (f *** mapA f >>> arr (uncurry (:))) where listEither [] = Left [] listEither (x : xs) = Right (x, xs) |