combos-bird.js
// Birds
// λ α β η φ χ ξ θ ϑ ζ ψ
// Idiot bird, identity, λa.a 1 const I = a => a;
// I* (I once removed), ONE, λab.ab 2 const I2 = a => b => a(b)
// I** (I twice removed), IF, λabc.abc 3 const I3 = c => x => y => c(x)(y) // IF takes a predicate and two values, // returning the first value if the predicate is True and // the second if the predicate is False. // This is the I** combinator
// Mockingbird, ω, self-application, λa.aa 1 const M = a => a(a); // MM is big Ω it diverges: (λa.aa)(λa.aa)
// Kestrel (True, First), λa.λb.a 2 const K = a => b => a; // Kite, KI, F, False, λa.λb.b, F=CT
// Cardinal, flip (arguments), λf.λxy.fxy 3 const C = f => a => b => f(b)(a);
// Bluebird, compose (functions), λf.λg.λx.f(gx) 3 const B = f => g => x => f(g(x));
// Starling, apply both fns, λfgx.fx(gx) 3 const S = f => g => x => f(x)(g(x));
// Vireo, Pair (x,y), λxyc.cxy 3 const V = x => y => c => c(x)(y) // use K as c to get x, KI as c get y (c = Chooser function)
const B1 = a => b => c => d => a(b(c)(d)) const B2 = a => b => c => d => e => a(b(c)(d)(e)) const B3 = a => b => c => d => a(b(c(d)))
const C_ = a => b => c => d => a(b)(d)(c) const C__ = a => b => c => d => e => a(b)(c)(e)(d)
// Dove const D = a => b => c => d => a(b)(c(d)) const D1 = a => b => c => d => e => a(b)(c)(d(e)) const D2 = a => b => c => d => e => a(b(c))(d(e))
// Eagle const E = a => b => c => d => e => a(b)(c(d)(e))
const F = a => b => c => c(b)(a) const F_ = a => b => c => d => a(d)(c)(b) const F__ = a => b => c => d => e => a(b)(e)(d)(c)
const G = a => b => c => d => a(d)(b(c))
const H = a => b => c => a(b)(c)(b)
const J = a => b => c => d => a(b)(a(d)(c))
const L = a => b => a(b(b))
const M2 = a => b => a(b)(a(b))
const O = a => b => b(a(b)) const Q = a => b => c => b(a(c)) const Q1 = a => b => c => a(c(b)) const Q2 = a => b => c => b(c(a)) const Q3 = a => b => c => c(a(b)) const Q4 = a => b => c => c(b(a))
const R = a => b => c => b(c)(a) const R_ = a => b => c => d => a(c)(d)(b) const R__ = a => b => c => d => e => a(b)(d)(e)(c)
const T = a => b => b(a)
const U = a => b => b(a(a)(b))
const V_ = a => b => c => d => a(c)(b)(d) const V__ = a => b => c => d => e => a(b)(e)(c)(d)
const W = a => b => a(b)(b) const W_ = a => b => c => a(b)(c)(c) const W__ = a => b => c => d => a(b)(c)(d)(d) const W1 = a => b => b(a)(a)
const Y = a => (b => b(b))(b => a(c => b(b)(c)))
Last updated