-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Haskell operator -- `g ... f = \x1 .. xn -> g (f x1 .. xn)`. -- -- Haskell operator `g ... f = x1 .. xn -> g (f x1 .. xn)`. Compose -- functions such that all arguments are applied. Obviates `(.).(.)` and -- similar patterns in some cases. @package control-dotdotdot @version 0.1.0.0 -- | Haskell operator g ... f = x1 .. xn -> g (f x1 .. xn). -- Compose functions such that all arguments are applied. Obviates -- (.).(.) and similar patterns in some cases. -- -- Examples: -- --
--   > ((+) ... (+) ... (+)) (1 :: Int) 2 3 4
--   10
--   
module Control.DotDotDot -- | Class for defining ... recursively on function types. class b ~ IsFun f => DotDotDot f (b :: Bool) where type Return (f :: *) (b :: Bool) :: * type Replace (f :: *) (r :: *) (b :: Bool) :: * where { type family Return (f :: *) (b :: Bool) :: *; type family Replace (f :: *) (r :: *) (b :: Bool) :: *; } (...) :: DotDotDot f b => (Return f b -> r) -> f -> Replace f r b -- | Alias for .... (…) :: (b ~ IsFun f, DotDotDot f b) => (Return f b -> r) -> f -> Replace f r b infixr 9 `…` -- | IsFun f is 'True if f has form _ -> -- _ and 'False otherwise. instance Control.DotDotDot.DotDotDot b (Control.DotDotDot.IsFun b) => Control.DotDotDot.DotDotDot (a -> b) 'GHC.Types.True instance 'GHC.Types.False ~ Control.DotDotDot.IsFun a => Control.DotDotDot.DotDotDot a 'GHC.Types.False