-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | An alternative to some of the Prelude. -- @package overture @version 0.0.2 -- | Overture is an alternative to some of the Prelude. It borrows -- ideas from Elm and F#. It aims to provide a more -- readable set of functions in order to make Haskell easier to use. It -- does not export anything that conflicts with the Prelude. To -- use it, simply import it. -- --
--   >>> import Overture
--   
module Overture -- | Identity function. This is like the id function from the -- Prelude. -- -- This function returns the value it was given. The result of -- identity x is x. -- --
--   >>> identity True
--   True
--   
-- -- This is useful when constructing functions that return other -- functions. -- --
--   >>> let f x = if x then recip else identity
--   
--   >>> f False 10
--   10.0
--   
--   >>> f True 10
--   0.1
--   
identity :: a -> a -- | Constant function. This is like the const function from -- the Prelude. -- -- This function takes two arguments and always returns the first. In -- other words, it ignores its second argument. The result of -- always x y is x. -- --
--   >>> always True undefined
--   True
--   
-- -- This can be useful with higher-order functions like map. -- --
--   >>> map (always True) [1 .. 3]
--   [True,True,True]
--   
always :: a -> b -> a -- | Function composition. This is like the . operator from -- the Prelude. -- -- This function combines two other functions. The result of -- compose f g is a new function the applies f -- first and then applies g. In other words, compose -- f g x is the same as g (f x). -- --
--   >>> let f = compose succ recip
--   
--   >>> f 9
--   0.1
--   
-- -- Composing many functions together quickly becomes unwieldy. Use -- .> or <. instead. -- --
--   >>> let g = succ `compose` recip `compose` negate
--   
--   >>> g 9
--   -0.1
--   
compose :: (a -> b) -> (b -> c) -> (a -> c) -- | Left-associative compose operator. This is like a flipped -- version of . operator from the Prelude. -- -- This operator combines two other functions more naturally than -- compose. The result of f .> g is a new -- function that applies f first and then applies g. -- --
--   >>> let f = succ .> recip
--   
--   >>> f 9
--   0.1
--   
-- -- When reading code, pronounce this operator as "and then". So the above -- example could be read as: "Add one, and then take the -- reciprocal." -- -- Thanks to its high precedence, composing many functions together is -- easy with this operator. -- --
--   >>> let g = succ .> recip .> negate
--   
--   >>> g 9
--   -0.1
--   
(.>) :: (a -> b) -> (b -> c) -> (a -> c) -- | Right-associative compose operator. This is like the . -- operator from the Prelude. -- -- Sometimes it is more convenient to combine functions from right to -- left. The result of g <. f is a new function that -- applies g but first applies f. -- --
--   >>> let f = recip <. succ
--   
--   >>> f 9
--   0.1
--   
-- -- Pronounce this operator as "but first" when reading code. The example -- above could be read as: "Take the reciprocal, but first add -- one." -- -- Composing many functions together is easy with this operator thanks to -- its high precedence. -- --
--   >>> let g = negate <. recip <. succ
--   
--   >>> g 9
--   -0.1
--   
(<.) :: (b -> c) -> (a -> b) -> (a -> c) -- | Function application. This is like the $ operator from -- the Prelude. -- -- This function applies an argument to function. -- --
--   >>> apply 4 succ
--   5
--   
-- -- Using this function to apply many arguments is cumbersome. Use -- |> or <| instead. -- --
--   >>> 4 `apply` succ `apply` recip
--   0.2
--   
-- -- 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 4) [succ, recip]
--   [5.0,0.25]
--   
apply :: a -> (a -> b) -> b -- | Left-associative apply operator. This is like a flipped version -- of the $ operator from the Prelude. -- -- This operator applies an argument to a function. The result of x -- |> f is f x. -- --
--   >>> 4 |> succ
--   5
--   
-- -- Since this operator has such low precedence, it can be used to remove -- parentheses in complicated expressions. -- --
--   >>> 4 |> succ |> recip
--   0.2
--   
-- -- When reading code, pronounce this operator as "pipe into". So the -- above example can be read as: "Four piped into plus one, -- piped into the reciprocal." -- -- It can also be used with higher-order functions, although apply -- might be clearer. -- --
--   >>> map (4 |>) [succ, recip]
--   [5.0,0.25]
--   
(|>) :: a -> (a -> b) -> b -- | Right-associative apply operator. This is like the $ -- operator from the Prelude. -- -- Sometimes it is more convenient to apply arguments right to left. The -- result of f <| x is f x. -- --
--   >>> succ <| 4
--   5
--   
-- -- Like |>, this operator has low precedence so it can be used -- to remove parentheses. -- --
--   >>> recip <| succ <| 4
--   0.2
--   
-- -- Pronounce this operator as "pipe from" when reading code. The example -- above can be read as: "The reciprocal piped from plus one, -- piped from five." -- -- This operator is a convenient alternative to flip -- apply. -- --
--   >>> map (<| 4) [succ, recip]
--   [5.0,0.25]
--   
(<|) :: (a -> b) -> a -> b -- | Strict function application. This is like the $! operator from -- the Prelude. -- -- This is the strict version of apply. It evaluates its argument -- with seq before applying it to the given function. In other -- words, apply' x f is the same as x `seq` -- apply x f. -- --
--   >>> apply' undefined (always 0)
--   *** Exception: Prelude.undefined
--   
apply' :: a -> (a -> b) -> b -- | Left-associative apply' operator. This is like a flipped -- version of the $! operator from the Prelude. -- -- This is the strict version of the |> operator. -- --
--   >>> undefined !> always 0
--   *** Exception: Prelude.undefined
--   
(!>) :: a -> (a -> b) -> b -- | Right-associative apply' operator. This is like the $! -- operator from the Prelude. -- -- This is the strict version of the <! operator. -- --
--   >>> always 0 <! undefined
--   *** Exception: Prelude.undefined
--   
( b) -> a -> b