IdrisDoc: Data.Combinators

Data.Combinators

Combinators that are thought to be at least situationally useful, mostly for
tacit (or point-free) programming. "To Mock a Mockingbird" refers to the book
"To Mock a Mockingbird and Other Logic Puzzles: Including an Amazing Adventure
in Combinatory Logic", by Raymond Smullyan (which the author of this module
hasn't actually read). See
http://www.angelfire.com/tx4/cus/combinator/birds.html and
https://hackage.haskell.org/package/data-aviary-0.4.0/docs/Data-Aviary-Birds.html
an (incomplete?) list of birds introduced.

(...) : (c -> d) -> (a -> b -> c) -> a -> b -> d

Blackbird, as named in "To Mock a Mockingbird". This is like
function composition, but second function takes two arguments. See the talk
"Point-Free or Die: Tacit Programming in Haskell and Beyond" by Amar Shah
(https://youtu.be/seVSlKazsNk).

Fixity
Left associative, precedence 9
fork2 : (b -> c -> d) -> (a -> b) -> (a -> c) -> a -> d

Phoenix, according to Data.Aviary.
See https://code.jsoftware.com/wiki/Vocabulary/fork.
Equivalent to liftA2 on the Reader monad ((->) e in Haskell)

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

Psi combinator - psi bird (?) - Haskell on.

reflex : (a -> a -> b) -> a -> b

Warbler, as named in "To Mock a Mockingbird".
See https://code.jsoftware.com/wiki/Vocabulary/tilde
Equivalent to join on the Reader monad ((->) e in Haskell)