data-aviary-0.1.0: Combinator birds.

Portabilityto be determined
Stabilityexperimental
Maintainerstephen.tetley@gmail.com

Data.Aviary

Contents

Description

Plainly named combinators

Sometimes permuted to be generally useful...

Note the fixity of (#) and (##) is not yet fixed. Some experience needs to be gathered as to whether the precendence levels are appropriate.

Synopsis

The real stuff

(#) :: a -> (a -> b) -> bSource

T combinator - thrush

Reverse application - the T combinator. Found in Peter Thiemann's Wash and the paper 'Client-Side Web Scripting in Haskell' - Erik Meijer, Daan Leijen & James Hook.

(##) :: (a -> b) -> (b -> c) -> a -> cSource

subst :: (a -> b -> c) -> (a -> b) -> a -> cSource

S combinator - subst. Familiar as Applicative's (<*>) operator, which itself is fmap:

f (b -> c) -> f b -> f c where f = ((->) a)

bigphi :: (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> dSource

The big Phi, or Turner's S' combinator. Known to Haskell programmers as liftA2 and liftM2 for the Applicative and Monad instances of (->).

 (a1 -> a2 -> r) -> m a1 -> m a2 -> m r where m = ((->) a)

Taste suggests you may prefer liftA2.

appro :: (c -> d -> e) -> (a -> c) -> (b -> d) -> a -> b -> eSource

A variant of the D2 or dovekie combinator - the argument order has been changed to be more satisfying for Haskellers.

appro is similar to the function prod from the Pair calculus, but appro applies the first argument f :: (c -> d -> e) to the two intermediate results. prod always forms a pair from the intermediate results.

on from Data.Function is similar but less general, where the two intermediate results are formed by applying the same function to the supplied arguments.

Specs

oo :: (c -> d) -> (a -> b -> c) -> a -> b -> dSource

Compose an arity 1 function with an arity 2 function. B1 - blackbird

ooo :: (d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> eSource

Compose an arity 1 function with an arity 3 function. B2 - bunting

oooo :: (e -> f) -> (a -> b -> c -> d -> e) -> a -> b -> c -> d -> fSource

Compose an arity 1 function with an arity 4 function.