-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Combinator birds.
--
-- A catalogue of the combinator birds (Data.Aviary.Birds etc.) - these
-- modules are intended for illustration and-or reference (i.e. looking
-- up combinators by their type signature).
--
-- Using Data.Aviary as a library (i.e. depending on it for
-- other packages) is not recommended: combinator-mania leads to
-- inscrutable code.
--
-- Changelog
--
-- v0.4.0:
--
--
-- - Removed the "useful" combinators (to emphasize that Data.Aviary is
-- not a utility library).
-- - Fixed typos in Haddock docs - thanks to Christopher Young for
-- spotting them.
--
--
-- v0.3.0:
--
--
-- - Added Monadic variations.
--
--
-- v0.2.3:
--
--
-- - Added Data.Aviary.BirdsVersion - same as the original Birds
-- module, but with type signatures following a revised naming
-- scheme.
--
--
-- v0.2.2:
--
--
-- - Added Data.Aviary.Functional - the Applicative, Monad etc.
-- combinatorswith implementations and signatures specialized to the
-- (simple) functional type cf. the Reader monad.
--
--
-- v0.2.1:
--
--
-- - Added dup and the combiner variants of
-- cardinal-prime.
--
--
-- v0.2.0:
--
--
-- - Added Haddock docs for (##).
--
@package data-aviary
@version 0.4.0
-- | Functor, Applicative, Monad operations specialized to the
-- functional type.
--
-- This catalogue is for reference and is not intended for use.
module Data.Aviary.Functional
-- | fmap for the function instance of Functor is compose
-- (.) which in turn is bluebird.
fmap :: (a -> b) -> (r -> a) -> (r -> b)
-- | The Applicative combinator (<$>) is a synonym for
-- fmap, so for the function instance of of Applicative it is
-- compose (.) which is bluebird.
(<$>) :: (a -> b) -> (r -> a) -> (r -> b)
-- | Applicative (<$).
(<$) :: a -> (r -> b) -> (r -> a)
-- | The function instance of Applicative pure is const
-- which is kestrel.
pure :: a -> (r -> a)
-- | The combinator (<*>) for the function instance of
-- Applicative is the S combinator aka starling.
(<*>) :: (r -> a -> b) -> (r -> a) -> (r -> b)
(*>) :: (r -> a) -> (r -> b) -> (r -> b)
(<*) :: (r -> a) -> (r -> b) -> (r -> a)
(<**>) :: (r -> a) -> (r -> a -> b) -> (r -> b)
-- | The Applicative function liftA is a synonym for fmap, so
-- for the function instance of of Applicative it is compose
-- (.) which is bluebird.
liftA :: (a -> b) -> (r -> a) -> (r -> b)
-- | liftA2 for the function instance of Applicative is the
-- phoenix combinator, also called big Phi and
-- starling-prime.
liftA2 :: (a -> b -> c) -> (r -> a) -> (r -> b) -> (r -> c)
liftA3 :: (a -> b -> c -> d) -> (r -> a) -> (r -> b) -> (r -> c) -> (r -> d)
-- | For the function instance of Category id is just the identity
-- function (Haskell's id).
id :: a -> a
-- | For the function instance of Category composition is just regular
-- function composition aka bluebird.
(.) :: (b -> c) -> (a -> b) -> (a -> c)
-- | For the function instance of Category right-to-left composition is
-- just regular function composition aka bluebird.
(<<<) :: (b -> c) -> (a -> b) -> (a -> c)
-- | For the function instance of Category left-to-right composition is the
-- queer bird.
(>>>) :: (a -> b) -> (b -> c) -> (a -> c)
(>>=) :: (r -> a) -> (a -> r -> b) -> (r -> b)
(>>) :: (r -> a) -> (r -> b) -> (r -> b)
-- | The function instance of Monadic return is equal to the
-- constant function (const) aka kestrel.
return :: a -> (r -> a)
fail :: String -> (r -> a)
mapM :: (a -> r -> b) -> [a] -> r -> [b]
mapM_ :: (a -> r -> b) -> [a] -> r -> ()
forM :: [a] -> (a -> r -> b) -> r -> [b]
forM_ :: [a] -> (a -> r -> b) -> r -> ()
sequence :: [r -> a] -> r -> [a]
sequence_ :: [r -> a] -> r -> ()
(=<<) :: (a -> r -> b) -> (r -> a) -> r -> b
(>=>) :: (a -> r -> b) -> (b -> r -> c) -> a -> r -> c
(<=<) :: (b -> r -> c) -> (a -> r -> b) -> a -> r -> c
forever :: (r -> a) -> (r -> b)
join :: (r -> (r -> a)) -> r -> a
filterM :: (a -> r -> Bool) -> [a] -> r -> [a]
mapAndUnzipM :: (a -> r -> (b, c)) -> [a] -> r -> ([b], [c])
zipWithM :: (a -> b -> r -> c) -> [a] -> [b] -> r -> [c]
zipWithM_ :: (a -> b -> r -> c) -> [a] -> [b] -> r -> ()
foldM :: (a -> b -> r -> a) -> a -> [b] -> r -> a
foldM_ :: (a -> b -> r -> a) -> a -> [b] -> r -> ()
replicateM :: Int -> (r -> a) -> r -> [a]
replicateM_ :: Int -> (r -> a) -> r -> ()
when :: Bool -> (r -> ()) -> r -> ()
unless :: Bool -> (r -> ()) -> r -> ()
-- | The Monadic function liftM would ideally be a synonym for
-- fmap, so for the function instance of of Monad it corresponds
-- to composition - Haskell's (.) and the bluebird
-- combinator.
liftM :: (a -> b) -> (r -> a) -> r -> b
-- | liftM2 for the function instance of Monad is the phoenix
-- combinator, also called big Phi and starling-prime.
liftM2 :: (a -> b -> c) -> (r -> a) -> (r -> b) -> r -> c
liftM3 :: (a -> b -> c -> d) -> (r -> a) -> (r -> b) -> (r -> c) -> r -> d
liftM4 :: (a -> b -> c -> d -> e) -> (r -> a) -> (r -> b) -> (r -> c) -> (r -> d) -> r -> e
liftM5 :: (a -> b -> c -> d -> e -> f) -> (r -> a) -> (r -> b) -> (r -> c) -> (r -> d) -> (r -> e) -> r -> f
-- | ap is the Monadic equivalent of the Applicative operator
-- (<*>). So for the function instance of Monad it
-- corresponds to the S combinator aka starling.
ap :: (r -> a -> b) -> (r -> a) -> r -> b
-- | The Arrow operation arr corresponds to function application for
-- the function instance of Arrow - i.e. Haskell's ($) operator.
--
-- This is the applicator combinator in Data.Aviary.
arr :: (b -> c) -> b -> c
first :: (b -> c) -> (b, d) -> (c, d)
second :: (b -> c) -> (d, b) -> (d, c)
(***) :: (b -> c) -> (b' -> c') -> (b, b') -> (c, c')
(&&&) :: (b -> c) -> (b -> c') -> b -> (c, c')
-- | For the function instance of Arrow, returnA is the identity
-- function aka idiot.
returnA :: b -> b
-- | The Arrow operation precomposition with a pure function
-- (left-to-right) is equal to the left-to-right composition operator
-- (>>>) for function Arrows.
--
-- This corresponds to queer.
(^>>) :: (b -> c) -> (c -> d) -> (b -> d)
-- | The Arrow operation postcomposition with a pure function
-- (left-to-right) is equal to the left-to-right composition operator
-- (>>>) for function Arrows.
--
-- This corresponds to queer.
(>>^) :: (b -> c) -> (c -> d) -> (b -> d)
-- | The Arrow operation precomposition with a pure function
-- (right-to-left) is equal to the right-to-left composition operator
-- (<<<) for function Arrows, which in turn is equal to
-- regular function composition.
--
-- This corresponds to bluebird.
(<<^) :: (c -> d) -> (b -> c) -> (b -> d)
-- | The Arrow operation postcomposition with a pure function
-- (right-to-left) is equal to the right-to-left composition operator
-- (<<<) for function Arrows, which in turn is equal to
-- regular function composition.
--
-- This corresponds to bluebird.
(^<<) :: (c -> d) -> (b -> c) -> (b -> d)
left :: (b -> c) -> (Either b d) -> (Either c d)
right :: (b -> c) -> (Either d b) -> (Either d c)
(+++) :: (b -> c) -> (b' -> c') -> (Either b b') -> (Either c c')
(|||) :: (b -> d) -> (c -> d) -> (Either b c) -> d
app :: (b -> c, b) -> c
leftApp :: (b -> c) -> (Either b d) -> (Either c d)
loop :: ((b, d) -> (c, d)) -> b -> c
extract :: Monoid m => (m -> a) -> a
duplicate :: Monoid m => (m -> a) -> m -> (m -> a)
extend :: Monoid m => ((m -> a) -> b) -> (m -> a) -> m -> b
liftW :: Monoid m => (a -> b) -> (m -> a) -> m -> b
(=>>) :: Monoid m => (m -> a) -> ((m -> a) -> b) -> m -> b
(.>>) :: Monoid m => (m -> a) -> b -> m -> b
liftCtx :: Monoid m => (a -> b) -> (m -> a) -> b
mapW :: Monoid m => ((m -> a) -> b) -> (m -> [a]) -> [b]
parallelW :: Monoid m => (m -> [a]) -> [m -> a]
unfoldW :: Monoid m => ((m -> b) -> (a, b)) -> (m -> b) -> [a]
sequenceW :: Monoid m => [(m -> a) -> b] -> (m -> a) -> [b]
-- | Bird monickered combinators - different naming scheme for the type
-- signatures to Data.Aviary.Birds.
--
-- This module is intended for illustration (the type signatures!) rather
-- than utility.
--
-- The 'long reach' Turner set { S, K, I, B, C, S', B', C' }
--
-- The Joy et al. set { S, I, B, C, J(alt), S', B', C', J(alt)' }
module Data.Aviary.BirdsVersion
-- | I combinator - identity bird / idiot bird - Haskell id.
idiot :: ans -> ans
-- | K combinator - kestrel - Haskell const. Corresponds to the
-- encoding of true in the lambda calculus.
kestrel :: ans -> r1 -> ans
-- | B combinator - bluebird - Haskell (.).
bluebird :: (a -> ans) -> (r1 -> a) -> r1 -> ans
-- | C combinator - cardinal - Haskell flip.
cardinal :: (r2 -> r1 -> ans) -> r1 -> r2 -> ans
-- | A combinator - apply / applicator - Haskell ($)
--
-- This is also called i-star.
applicator :: (r1 -> ans) -> r1 -> ans
-- | Psi combinator - psi bird (?) - Haskell on.
psi :: (a -> a -> ans) -> (r1 -> a) -> r1 -> r1 -> ans
-- | B3 combinator - becard.
becard :: (b -> ans) -> (a -> b) -> (r1 -> a) -> r1 -> ans
-- | B1 combinator - blackbird - specs oo.
blackbird :: (a -> ans) -> (r1 -> r2 -> a) -> r1 -> r2 -> ans
-- | B' combinator - bluebird prime.
bluebird' :: (r1 -> a -> ans) -> r1 -> (r2 -> a) -> r2 -> ans
-- | B2 combinator - bunting - specs ooo.
bunting :: (a -> ans) -> (r1 -> r2 -> r3 -> a) -> r1 -> r2 -> r3 -> ans
-- | C' combinator - no name.
cardinal' :: (a -> r1 -> ans) -> (r2 -> a) -> r1 -> r2 -> ans
-- | C* combinator - cardinal once removed.
cardinalstar :: (r1 -> r3 -> r2 -> ans) -> r1 -> r2 -> r3 -> ans
-- | C** combinator - cardinal twice removed.
cardinalstarstar :: (r1 -> r2 -> r4 -> r3 -> ans) -> r1 -> r2 -> r3 -> r4 -> ans
-- | D combinator - dove.
dove :: (r1 -> a -> ans) -> r1 -> (r2 -> a) -> r2 -> ans
-- | D1 combinator - dickcissel.
dickcissel :: (r1 -> r2 -> a -> ans) -> r1 -> r2 -> (r3 -> a) -> r3 -> ans
-- | D2 combinator - dovekie.
dovekie :: (a -> b -> ans) -> (r1 -> a) -> r1 -> (r2 -> b) -> r2 -> ans
-- | E combinator - eagle.
eagle :: (a -> d -> ans) -> a -> (b -> c -> d) -> b -> c -> ans
-- | E ^ - bald eagle. For alphabetical regularity it is somewhat misnamed
-- here as eaglebald.
eaglebald :: (a -> b -> ans) -> (r1 -> r2 -> a) -> r1 -> r2 -> (r3 -> r4 -> b) -> r3 -> r4 -> ans
-- | F combinator - finch.
finch :: r1 -> r2 -> (r2 -> r1 -> ans) -> ans
-- | F* combinator - finch once removed.
finchstar :: (r3 -> r2 -> r1 -> ans) -> r1 -> r2 -> r3 -> ans
-- | F** combinator - finch twice removed.
finchstarstar :: (r1 -> r4 -> r3 -> r2 -> ans) -> r1 -> r2 -> r3 -> r4 -> ans
-- | G combinator - goldfinch.
goldfinch :: (r2 -> a -> ans) -> (r1 -> a) -> r1 -> r2 -> ans
-- | H combinator - hummingbird.
hummingbird :: (r1 -> r2 -> r1 -> ans) -> r1 -> r2 -> ans
-- | I* combinator - identity bird once removed Alias of applicator,
-- Haskell's ($).
idstar :: (r1 -> ans) -> r1 -> ans
-- | I** combinator - identity bird twice removed
idstarstar :: (r1 -> r2 -> ans) -> r1 -> r2 -> ans
-- | Alternative J combinator - this is the J combintor of Joy,
-- Rayward-Smith and Burton (see. Antoni Diller 'Compiling Functional
-- Languages' page 104). It is not the J - jay combinator of the
-- literature.
jalt :: (r1 -> ans) -> r1 -> r2 -> ans
-- | J' combinator - from Joy, Rayward-Smith and Burton. See the comment to
-- jalt.
jalt' :: (r1 -> r2 -> ans) -> r1 -> r2 -> r3 -> ans
-- | J combinator - jay.
--
-- This is the usual J combinator.
jay :: (r1 -> ans -> ans) -> r1 -> ans -> r1 -> ans
-- | Ki - kite. Corresponds to the encoding of false in the lambda
-- calculus.
kite :: r1 -> ans -> ans
-- | O combinator - owl.
owl :: ((a -> ans) -> a) -> (a -> ans) -> ans
-- | (Big) Phi combinator - phoenix - Haskell liftM2.
phoenix :: (a -> b -> ans) -> (r1 -> a) -> (r1 -> b) -> r1 -> ans
-- | Q4 combinator - quacky bird.
quacky :: r1 -> (r1 -> a) -> (a -> ans) -> ans
-- | Q combinator - queer bird.
--
-- Haskell (##) in Peter Thiemann's Wash, reverse composition.
queer :: (r1 -> a) -> (a -> ans) -> r1 -> ans
-- | Q3 combinator - quirky bird.
quirky :: (r1 -> a) -> r1 -> (a -> ans) -> ans
-- | Q1 combinator - quixotic bird.
quixotic :: (a -> ans) -> r1 -> (r1 -> a) -> ans
-- | Q2 combinator - quizzical bird.
quizzical :: r1 -> (a -> ans) -> (r1 -> a) -> ans
-- | R combinator - robin.
robin :: r1 -> (r2 -> r1 -> ans) -> r2 -> ans
-- | R* combinator - robin once removed.
robinstar :: (r2 -> r3 -> r1 -> ans) -> r1 -> r2 -> r3 -> ans
-- | R** combinator - robin twice removed.
robinstarstar :: (r1 -> r3 -> r4 -> r2 -> ans) -> r1 -> r2 -> r3 -> r4 -> ans
-- | S combinator - starling.
--
-- Haskell: Applicative's (<*>) on functions.
--
-- (Substitution / composition).
starling :: (r1 -> a -> ans) -> (r1 -> a) -> r1 -> ans
-- | S' combinator - starling prime - Turner's big phi. Haskell:
-- Applicative's liftA2 on functions.
starling' :: (a -> b -> ans) -> (r1 -> a) -> (r1 -> b) -> r1 -> ans
-- | T combinator - thrush. Haskell (#) in Peter Thiemann's Wash,
-- reverse application.
thrush :: r1 -> (r1 -> ans) -> ans
-- | V combinator - vireo.
vireo :: r1 -> r2 -> (r1 -> r2 -> ans) -> ans
-- | V* combinator - vireo once removed.
vireostar :: (r2 -> r1 -> r2 -> ans) -> r1 -> r2 -> r2 -> ans
-- | V** combinator - vireo twice removed.
vireostarstar :: (r1 -> r3 -> r2 -> r3 -> ans) -> r1 -> r2 -> r3 -> r3 -> ans
-- | W combinator - warbler - elementary duplicator.
warbler :: (r1 -> r1 -> ans) -> r1 -> ans
-- | W1 combinator - converse warbler. warbler with the arguments
-- reversed.
warbler1 :: r1 -> (r1 -> r1 -> ans) -> ans
-- | W* combinator - warbler once removed.
warblerstar :: (r1 -> r2 -> r2 -> ans) -> r1 -> r2 -> ans
-- | W** combinator - warbler twice removed.
warblerstarstar :: (r1 -> r2 -> r3 -> r3 -> ans) -> r1 -> r2 -> r3 -> ans
-- | Bird monickered combinators interdefined.
--
-- This module is intended for illustration rather than utility.
--
-- The 'long reach' Turner set { S, K, I, B, C, S', B', C' }
--
-- The Joy et al. set { S, I, B, C, J(alt), S', B', C', J(alt)' }
module Data.Aviary.BirdsInter
-- | I combinator - identity bird / idiot bird - Haskell id.
idiot :: a -> a
-- | K combinator - kestrel - Haskell const. Corresponds to the
-- encoding of true in the lambda calculus.
--
-- Not interdefined.
kestrel :: a -> b -> a
-- | B combinator - bluebird - Haskell (.).
bluebird :: (b -> c) -> (a -> b) -> a -> c
-- | C combinator - cardinal - Haskell flip.
cardinal :: (a -> b -> c) -> b -> a -> c
-- | A combinator - apply / applicator - Haskell ($).
--
-- This is also called i-star.
--
-- Note: the (inter-) definition here is - C (B B I) I - and not
-- the familiar - S (S K) - which as far as Haskell is concerned
-- has a different type:
--
--
-- (S(SK)) :: ((a -> b) -> a) -> (a -> b) -> a
--
applicator :: (a -> b) -> a -> b
-- | Psi combinator - psi bird (?) - Haskell on.
psi :: (b -> b -> c) -> (a -> b) -> a -> a -> c
-- | B3 combinator - becard.
becard :: (c -> d) -> (b -> c) -> (a -> b) -> a -> d
-- | B1 combinator - blackbird - specs oo.
blackbird :: (c -> d) -> (a -> b -> c) -> a -> b -> d
-- | B' combinator - bluebird prime.
bluebird' :: (a -> c -> d) -> a -> (b -> c) -> b -> d
-- | B2 combinator - bunting - specs ooo.
bunting :: (d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> e
-- | C' combinator - no name.
cardinal' :: (c -> a -> d) -> (b -> c) -> a -> b -> d
-- | C* combinator - cardinal once removed.
cardinalstar :: (a -> c -> b -> d) -> a -> b -> c -> d
-- | C** combinator - cardinal twice removed.
cardinalstarstar :: (a -> b -> d -> c -> e) -> a -> b -> c -> d -> e
-- | D combinator - dove.
dove :: (a -> c -> d) -> a -> (b -> c) -> b -> d
-- | D1 combinator - dickcissel.
dickcissel :: (a -> b -> d -> e) -> a -> b -> (c -> d) -> c -> e
-- | D2 combinator - dovekie.
dovekie :: (c -> d -> e) -> (a -> c) -> a -> (b -> d) -> b -> e
-- | E combinator - eagle.
eagle :: (a -> d -> e) -> a -> (b -> c -> d) -> b -> c -> e
-- | E ^ - bald eagle. For alphabetical regularity it is somewhat misnamed
-- here as eaglebald.
eaglebald :: (e -> f -> g) -> (a -> b -> e) -> a -> b -> (c -> d -> f) -> c -> d -> g
-- | F combinator - finch.
finch :: a -> b -> (b -> a -> c) -> c
-- | F* combinator - finch once removed.
finchstar :: (c -> b -> a -> d) -> a -> b -> c -> d
-- | F** combinator - finch twice removed.
finchstarstar :: (a -> d -> c -> b -> e) -> a -> b -> c -> d -> e
-- | G combinator - goldfinch.
goldfinch :: (b -> c -> d) -> (a -> c) -> a -> b -> d
-- | H combinator - hummingbird.
hummingbird :: (a -> b -> a -> c) -> a -> b -> c
-- | I* combinator - identity bird once removed. Alias of
-- applicator, Haskell's ($). Type signature
idstar :: (a -> b) -> a -> b
-- | I** combinator - identity bird twice removed.
idstarstar :: (a -> b -> c) -> a -> b -> c
-- | Alternative J combinator - this is the J combintor of Joy,
-- Rayward-Smith and Burton (see. Antoni Diller 'Compiling Functional
-- Languages' page 104). It is not the J - jay combinator of the
-- literature.
jalt :: (a -> c) -> a -> b -> c
-- | J' combinator - from Joy, Rayward-Smith and Burton. See the comment to
-- jalt.
jalt' :: (a -> b -> d) -> a -> b -> c -> d
-- | J combinator - jay.
--
-- This is the usual J combinator.
jay :: (a -> b -> b) -> a -> b -> a -> b
-- | Ki - kite. Corresponds to the encoding of false in the lambda
-- calculus.
kite :: a -> b -> b
-- | O combinator - owl.
owl :: ((a -> b) -> a) -> (a -> b) -> b
-- | (Big) Phi combinator - phoenix - Haskell liftM2.
phoenix :: (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d
-- | Q4 combinator - quacky bird.
quacky :: a -> (a -> b) -> (b -> c) -> c
-- | Q combinator - queer bird.
--
-- Haskell (##) in Peter Thiemann's Wash, reverse composition.
queer :: (a -> b) -> (b -> c) -> a -> c
-- | Q3 combinator - quirky bird.
quirky :: (a -> b) -> a -> (b -> c) -> c
-- | Q1 combinator - quixotic bird.
quixotic :: (b -> c) -> a -> (a -> b) -> c
-- | Q2 combinator - quizzical bird.
quizzical :: a -> (b -> c) -> (a -> b) -> c
-- | R combinator - robin.
robin :: a -> (b -> a -> c) -> b -> c
-- | R* combinator - robin once removed.
robinstar :: (b -> c -> a -> d) -> a -> b -> c -> d
-- | R** combinator - robin twice removed.
robinstarstar :: (a -> c -> d -> b -> e) -> a -> b -> c -> d -> e
-- | S combinator - starling.
--
-- Haskell: Applicative's (<*>) on functions.
--
-- Not interdefined.
starling :: (a -> b -> c) -> (a -> b) -> a -> c
-- | S' combinator - starling prime - Turner's big phi. Haskell:
-- Applicative's liftA2 on functions.
starling' :: (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d
-- | T combinator - thrush. Haskell (#) in Peter Thiemann's Wash,
-- reverse application.
thrush :: a -> (a -> b) -> b
-- | V combinator - vireo.
vireo :: a -> b -> (a -> b -> b) -> b
-- | V* combinator - vireo once removed.
vireostar :: (b -> a -> b -> d) -> a -> b -> b -> d
-- | V** combinator - vireo twice removed.
vireostarstar :: (a -> c -> b -> c -> e) -> a -> b -> c -> c -> e
-- | W combinator - warbler - elementary duplicator.
warbler :: (a -> a -> b) -> a -> b
-- | W1 combinator - converse warbler. warbler with the arguments
-- reversed.
warbler1 :: a -> (a -> a -> b) -> b
-- | W* combinator - warbler once removed.
warblerstar :: (a -> b -> b -> c) -> a -> b -> c
-- | W** combinator - warbler twice removed.
warblerstarstar :: (a -> b -> c -> c -> d) -> a -> b -> c -> d
-- | Bird monickered combinators
--
-- This module is intended for illustration (the type signatures!) rather
-- than utility.
--
-- The 'long reach' Turner set { S, K, I, B, C, S', B', C' }
--
-- The Joy et al. set { S, I, B, C, J(alt), S', B', C', J(alt)' }
module Data.Aviary.Birds
-- | I combinator - identity bird / idiot bird - Haskell id.
idiot :: a -> a
-- | K combinator - kestrel - Haskell const. Corresponds to the
-- encoding of true in the lambda calculus.
kestrel :: a -> b -> a
-- | B combinator - bluebird - Haskell (.).
bluebird :: (b -> c) -> (a -> b) -> a -> c
-- | C combinator - cardinal - Haskell flip.
cardinal :: (a -> b -> c) -> b -> a -> c
-- | A combinator - apply / applicator - Haskell ($).
--
-- This is also called i-star.
applicator :: (a -> b) -> a -> b
-- | Psi combinator - psi bird (?) - Haskell on.
psi :: (b -> b -> c) -> (a -> b) -> a -> a -> c
-- | B3 combinator - becard.
becard :: (c -> d) -> (b -> c) -> (a -> b) -> a -> d
-- | B1 combinator - blackbird - specs oo.
blackbird :: (c -> d) -> (a -> b -> c) -> a -> b -> d
-- | B' combinator - bluebird prime.
bluebird' :: (a -> c -> d) -> a -> (b -> c) -> b -> d
-- | B2 combinator - bunting - specs ooo.
bunting :: (d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> e
-- | C' combinator - no name.
cardinal' :: (c -> a -> d) -> (b -> c) -> a -> b -> d
-- | C* combinator - cardinal once removed.
cardinalstar :: (a -> c -> b -> d) -> a -> b -> c -> d
-- | C** combinator - cardinal twice removed.
cardinalstarstar :: (a -> b -> d -> c -> e) -> a -> b -> c -> d -> e
-- | D combinator - dove.
dove :: (a -> c -> d) -> a -> (b -> c) -> b -> d
-- | D1 combinator - dickcissel.
dickcissel :: (a -> b -> d -> e) -> a -> b -> (c -> d) -> c -> e
-- | D2 combinator - dovekie.
dovekie :: (c -> d -> e) -> (a -> c) -> a -> (b -> d) -> b -> e
-- | E combinator - eagle.
eagle :: (a -> d -> e) -> a -> (b -> c -> d) -> b -> c -> e
-- | E ^ - bald eagle. For alphabetical regularity it is somewhat misnamed
-- here as eaglebald.
eaglebald :: (e -> f -> g) -> (a -> b -> e) -> a -> b -> (c -> d -> f) -> c -> d -> g
-- | F combinator - finch.
finch :: a -> b -> (b -> a -> c) -> c
-- | F* combinator - finch once removed.
finchstar :: (c -> b -> a -> d) -> a -> b -> c -> d
-- | F** combinator - finch twice removed.
finchstarstar :: (a -> d -> c -> b -> e) -> a -> b -> c -> d -> e
-- | G combinator - goldfinch.
goldfinch :: (b -> c -> d) -> (a -> c) -> a -> b -> d
-- | H combinator - hummingbird.
hummingbird :: (a -> b -> a -> c) -> a -> b -> c
-- | I* combinator - identity bird once removed Alias of applicator,
-- Haskell's ($).
idstar :: (a -> b) -> a -> b
-- | I** combinator - identity bird twice removed
idstarstar :: (a -> b -> c) -> a -> b -> c
-- | Alternative J combinator - this is the J combintor of Joy,
-- Rayward-Smith and Burton (see. Antoni Diller 'Compiling Functional
-- Languages' page 104). It is not the J - jay combinator of the
-- literature.
jalt :: (a -> c) -> a -> b -> c
-- | J' combinator - from Joy, Rayward-Smith and Burton. See the comment to
-- jalt.
jalt' :: (a -> b -> d) -> a -> b -> c -> d
-- | J combinator - jay.
--
-- This is the usual J combinator.
jay :: (a -> b -> b) -> a -> b -> a -> b
-- | Ki - kite. Corresponds to the encoding of false in the lambda
-- calculus.
kite :: a -> b -> b
-- | O combinator - owl.
owl :: ((a -> b) -> a) -> (a -> b) -> b
-- | (Big) Phi combinator - phoenix - Haskell liftM2.
--
-- This is the same function as starling'.
phoenix :: (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d
-- | Q4 combinator - quacky bird.
quacky :: a -> (a -> b) -> (b -> c) -> c
-- | Q combinator - queer bird.
--
-- Haskell (##) in Peter Thiemann's Wash, reverse composition.
queer :: (a -> b) -> (b -> c) -> a -> c
-- | Q3 combinator - quirky bird.
quirky :: (a -> b) -> a -> (b -> c) -> c
-- | Q1 combinator - quixotic bird.
quixotic :: (b -> c) -> a -> (a -> b) -> c
-- | Q2 combinator - quizzical bird.
quizzical :: a -> (b -> c) -> (a -> b) -> c
-- | R combinator - robin.
robin :: a -> (b -> a -> c) -> b -> c
-- | R* combinator - robin once removed.
robinstar :: (b -> c -> a -> d) -> a -> b -> c -> d
-- | R** combinator - robin twice removed.
robinstarstar :: (a -> c -> d -> b -> e) -> a -> b -> c -> d -> e
-- | S combinator - starling.
--
-- Haskell: Applicative's (<*>) on functions.
--
-- Substitution.
starling :: (a -> b -> c) -> (a -> b) -> a -> c
-- | S' combinator - starling prime - Turner's big phi. Haskell:
-- Applicative's liftA2 on functions (and similarly Monad's
-- liftM2).
--
-- This is the same function as phoenix.
starling' :: (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d
-- | T combinator - thrush. Haskell (#) in Peter Thiemann's Wash,
-- reverse application.
thrush :: a -> (a -> b) -> b
-- | V combinator - vireo (pairing).
vireo :: a -> b -> (a -> b -> c) -> c
-- | V* combinator - vireo once removed.
vireostar :: (b -> a -> b -> d) -> a -> b -> b -> d
-- | V** combinator - vireo twice removed.
vireostarstar :: (a -> c -> b -> c -> e) -> a -> b -> c -> c -> e
-- | W combinator - warbler - elementary duplicator.
warbler :: (a -> a -> b) -> a -> b
-- | W1 combinator - converse warbler. warbler with the arguments
-- reversed.
warbler1 :: a -> (a -> a -> b) -> b
-- | W* combinator - warbler once removed.
warblerstar :: (a -> b -> b -> c) -> a -> b -> c
-- | W** combinator - warbler twice removed.
warblerstarstar :: (a -> b -> c -> c -> d) -> a -> b -> c -> d