base-4.8.2.0: Basic libraries

Data.Function

Contents

Description

Simple combinators working solely on and with functions.

Synopsis

• id :: a -> a
• const :: a -> b -> a
• (.) :: (b -> c) -> (a -> b) -> a -> c
• flip :: (a -> b -> c) -> b -> a -> c
• (\$) :: (a -> b) -> a -> b
• (&) :: a -> (a -> b) -> b
• fix :: (a -> a) -> a
• on :: (b -> b -> c) -> (a -> b) -> a -> a -> c

# Prelude re-exports

id :: a -> a Source

Identity function.

const :: a -> b -> a Source

Constant function.

(.) :: (b -> c) -> (a -> b) -> a -> c infixr 9 Source

Function composition.

flip :: (a -> b -> c) -> b -> a -> c Source

`flip f` takes its (first) two arguments in the reverse order of `f`.

(\$) :: (a -> b) -> a -> b infixr 0 Source

Application operator. This operator is redundant, since ordinary application `(f x)` means the same as `(f \$ x)`. However, `\$` has low, right-associative binding precedence, so it sometimes allows parentheses to be omitted; for example:

`    f \$ g \$ h x  =  f (g (h x))`

It is also useful in higher-order situations, such as `map (\$ 0) xs`, or `zipWith (\$) fs xs`.

# Other combinators

(&) :: a -> (a -> b) -> b infixl 1 Source

`&` is a reverse application operator. This provides notational convenience. Its precedence is one higher than that of the forward application operator `\$`, which allows `&` to be nested in `\$`.

Since: 4.8.0.0

fix :: (a -> a) -> a Source

`fix f` is the least fixed point of the function `f`, i.e. the least defined `x` such that `f x = x`.

on :: (b -> b -> c) -> (a -> b) -> a -> a -> c infixl 0 Source

`(*) `on` f = \x y -> f x * f y`.

Typical usage: `sortBy (compare `on` fst)`.

Algebraic properties:

• `(*) `on` id = (*)` (if `(*) ∉ {⊥, const ⊥}`)
• `((*) `on` f) `on` g = (*) `on` (f . g)`
• ``flip` on f . `flip` on g = `flip` on (g . f)`