General combinators

These are general functions, which do not pertain to any domain in particular. They are typically used in combination with other functions.

id : a -> a

The identity function, which simply returns whatever input it is given.

val a = id 14
//    = 14
val b = id "some text"
//    = "some text"

const : a -> b -> a

const x is a function which returns x no matter what input it is given, i.e., the constant x function.

val x = const 30 100
//    = 30
val f = const 0
//    = \_ -> 0

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

Flips the order of the first two arguments of a function.

Examples

val a = flip (\x -> \y -> x) 10 20
//    = 20

comp: (a -> b) -> (c -> a) -> c -> b

Composes two unary functions.

Examples

val a = comp (\x -> x + 5) (\y -> y * 12) 5
//    =  (\x -> x + 5) 60 = 65

via: (a -> b) -> (b -> b -> c) -> (a -> a -> c)

via f g x y transforms x and y using unary function f and applies the results to binary function g.

Examples

val a = via fst compareInt (1, 3.15) (2, 0.75)
//    = Less
val b = via snd compareFloat (1, 3.15) (2, 0.75)
//    = Greater

min : (a -> a -> Ordering) -> a -> a -> a

Returns the smaller of the two last arguments, using the comparison function provided as the first argument. Examples ^^^^^^^^

val a = min compareInt 8 9
//    = 8
val b = min compareFloat 4.233 3.11
//    = 3.11

max : (a -> a -> Ordering) -> a -> a -> a

Returns the larger of the two last arguments, using the comparison function provided as the first argument. Examples ^^^^^^^^

val a = max compareInt 8 9
//    = 9
val b = max compareFloat 4.233 3.11
//    = 4.233