module Control.Apply.Util (
	(&), chain, with
	) where

(&) :: a -> (a -> b) -> b
(&) = flip ($)

chain :: [a -> a] -> a -> a
chain = foldr (.) id

-- | Flipped version of 'chain', which can be used like this:
--
-- >foo `with` [f, g, h]
with :: a -> [a -> a] -> a
with = flip chain