-- 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: -- -- -- -- v0.3.0: -- -- -- -- v0.2.3: -- -- -- -- v0.2.2: -- -- -- -- v0.2.1: -- -- -- -- v0.2.0: -- -- @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