-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Write more understandable Haskell. -- @package flow @version 1.0.1 -- | Flow is a package that provides functions and operators for writing -- more understandable Haskell. It's an alternative to some common idioms -- like ($) for function application and (.) for -- function composition. -- -- Flow is designed to be imported unqualified. It does not export -- anything that conflicts with the base package. -- --
--   >>> import Flow
--   
-- -- For more information about Flow, please visit the official -- site. module Flow -- |
--   apply x f == f x
--   
-- -- Function application. This is like the $ operator. -- --
--   >>> apply False not
--   True
--   
-- -- Using this function with many arguments is cumbersome. Use -- |> or <| instead. -- --
--   >>> False `apply` not `apply` fromEnum
--   1
--   
-- -- This function usually isn't necessary since apply x f -- is the same as f x. However it can come in handy when working -- with higher-order functions. -- --
--   >>> map (apply False) [not, id]
--   [True,False]
--   
apply :: a -> (a -> b) -> b -- |
--   (x |> f) == f x
--   
-- --
--   (x |> f |> g) == g (f x)
--   
-- -- Left-associative apply operator. This is like a flipped version -- of the $ operator. Read it as "apply forward" or "pipe into". -- --
--   >>> False |> not
--   True
--   
-- -- Since this operator has such low precedence, it can be used to remove -- parentheses from complicated expressions. -- --
--   >>> False |> not |> fromEnum
--   1
--   
-- -- This operator can be used with higher-order functions, but -- apply might be clearer. -- --
--   >>> map (False |>) [not, id]
--   [True,False]
--   
(|>) :: a -> (a -> b) -> b -- |
--   (f <| x) == f x
--   
-- --
--   (g <| f <| x) == g (f x)
--   
-- -- Right-associative apply operator. This is like the $ -- operator. Read it as "apply backward" or "pipe from". -- --
--   >>> not <| False
--   True
--   
-- -- This operator can be used to remove parentheses from complicated -- expressions because of its low precedence. -- --
--   >>> fromEnum <| not <| False
--   1
--   
-- -- With higher-order functions, this operator is a clearer alternative to -- flip apply. -- --
--   >>> map (<| False) [not, id]
--   [True,False]
--   
(<|) :: (a -> b) -> a -> b -- |
--   compose f g x == g (f x)
--   
-- -- Function composition. This is like the . operator. -- --
--   >>> (compose not fromEnum) False
--   1
--   
-- -- Composing many functions together quickly becomes unwieldy. Use -- .> or <. instead. -- --
--   >>> (not `compose` fromEnum `compose` succ) False
--   2
--   
compose :: (a -> b) -> (b -> c) -> (a -> c) -- |
--   (f .> g) x == g (f x)
--   
-- --
--   (f .> g .> h) x == h (g (f x))
--   
-- -- Left-associative compose operator. This is like a flipped -- version of the . operator. Read it as "compose forward" or "and -- then". -- --
--   >>> (not .> fromEnum) False
--   1
--   
-- -- Thanks to its high precedence, composing many functions together is -- easy. -- --
--   >>> (not .> fromEnum .> succ) False
--   2
--   
(.>) :: (a -> b) -> (b -> c) -> (a -> c) -- |
--   (g <. f) x == g (f x)
--   
-- --
--   (h <. g <. f) x == h (g (f x))
--   
-- -- Right-associative compose operator. This is like the . -- operator. Read it as "compose backward" or "but first". -- --
--   >>> (fromEnum <. not) False
--   1
--   
-- -- Composing many functions together is easy thanks to its high -- precedence. -- --
--   >>> (succ <. fromEnum <. not) False
--   2
--   
(<.) :: (b -> c) -> (a -> b) -> (a -> c) -- |
--   apply' x f == seq x (f x)
--   
-- -- Strict function application. This is like the $! operator. -- --
--   >>> apply' undefined (const False)
--   *** Exception: Prelude.undefined
--   
apply' :: a -> (a -> b) -> b -- |
--   (x !> f) == seq x (f x)
--   
-- --
--   (x !> f !> g) == seq x (g (seq x (f x)))
--   
-- -- Left-associative apply' operator. This is like a flipped -- version of the $! operator. -- --
--   >>> undefined !> const False
--   *** Exception: Prelude.undefined
--   
(!>) :: a -> (a -> b) -> b -- |
--   (f <! x) == seq x (f x)
--   
-- --
--   (g <! f <! x) == seq x (g (seq x (f x)))
--   
-- -- Right-associative apply' operator. This is like the $! -- operator. -- --
--   >>> const False <! undefined
--   *** Exception: Prelude.undefined
--   
( b) -> a -> b