Portability | to be determined |
---|---|
Stability | experimental |
Maintainer | stephen.tetley@gmail.com |
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.
- (#) :: a -> (a -> b) -> b
- (##) :: (a -> b) -> (b -> c) -> a -> c
- subst :: (a -> b -> c) -> (a -> b) -> a -> c
- bigphi :: (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d
- appro :: (c -> d -> e) -> (a -> c) -> (b -> d) -> a -> b -> e
- oo :: (c -> d) -> (a -> b -> c) -> a -> b -> d
- ooo :: (d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> e
- oooo :: (e -> f) -> (a -> b -> c -> d -> e) -> a -> b -> c -> d -> f
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.
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