bird | syntax | combinator | interpretation |
---|---|---|---|
idiot | a -> a | I combinator | id |
kestrel | a -> b -> a | K combinator | const |
bluebird | (b -> c) -> (a -> b) -> a -> c | B combinator | compose |
cardinal | (a -> b -> c) -> b -> a -> c | C combinator | flip |
applicator | (a -> b) -> a -> b | A combinator | function application |
psi | (b -> b -> c) -> (a -> b) -> a -> a -> c | Psi combinator | on |
becard | (c -> d) -> (b -> c) -> (a -> b) -> a -> d | B3 combinator | |
blackbird | (c -> d) -> (a -> b -> c) -> a -> b -> d | B1 combinator | |
bluebird prime | (a -> c -> d) -> a -> (b -> c) -> b -> d | B' combinator | |
bunting | (d -> e) -> (a -> b -> c -> d) -> a -> b -> c -> e | B2 combinator |
-
Implementations Haskell data-aviary, Purescript Aviary.Birds, JavaScript fantasy-birds, Scala folone/type-level-birds
-
Resources
- Combinator Birds - Chris Rathman Reference of Birds expressed as Combinatory Logic (SKI calculus)
- functions from Functor, Applicative, Monad, Comond as combinators
- Haskell Wiki Combinatory logic
- The Thrush combinator in Scala - Debasish Ghosh (blog post)
- (Haskell) Combinators in Haskell - geophf (blog post)
- (Haskell) Combinatory Birds as Types - geophf (blog post)