packages feed

arrowp-qq-0.2: examples/small/Lift.hs

{- LANGUAGE Arrows -}
{-# OPTIONS -F -pgmF arrowp-ext #-}
module Lift where

import           Control.Arrow

-- lifting a binary operation to arrows (Hughes's paper, s4.1)

liftA2' :: Arrow a => (b -> c -> d) -> a e b -> a e c -> a e d
liftA2' op f g = proc x -> do
		y <- f -< x
		z <- g -< x
		returnA -< y `op` z