hakyll/src/Hakyll/Core/Util/Arrow.hs
Jasper Van der Jeugt 1c1133dfd6 More arrows
2010-12-30 10:02:25 +01:00

28 lines
624 B
Haskell

-- | Various arrow utility functions
--
module Hakyll.Core.Util.Arrow
( sequenceArr
, unitArr
, withUnitArr
) where
import Prelude hiding (id)
import Control.Arrow (Arrow, (&&&), (>>>), arr, (***))
import Control.Category (id)
sequenceArr :: Arrow a
=> [a b c]
-> a b [c]
sequenceArr = foldl reduce $ arr $ const []
where
reduce la xa = xa &&& la >>> arr (uncurry (:))
unitArr :: Arrow a
=> a b ()
unitArr = arr (const ())
withUnitArr :: Arrow a
=> a b c
-> a () d
-> a b (c, d)
withUnitArr a1 a2 = a1 &&& unitArr >>> id *** a2