------------------------------------------------------------------------------- -- $Id: Beside.hs#1 2009/10/01 10:31:09 REDMOND\\satnams $ ------------------------------------------------------------------------------- module Lava.Beside where ------------------------------------------------------------------------------- -- 4-Sided Tile Combinators ------------------------------------------------------------------------------- -- BESIDE -- d g -- | | -- ^ ^ -- ----- ----- -- | | | | -- b ->| r |-> c ->| s |-> f -- | | | | -- ----- ----- -- | | -- ^ ^ -- a e ------------------------------------------------------------------------------- beside :: Monad m => (((a, b) -> m (c, d)) -> -- type of r ((e, c) -> m (f, g)) -> -- type of s (((a,e), b)) -> m (f, (d,g))) -- type of result beside r s ((a,e), b) = do (c, d) <- r (a, b) (f, g) <- s (e, c) return (f, (d,g)) -------------------------------------------------------------------------------