is phoenix/phi and Phi1 implemented incorrectly?
Cazadorro opened this issue · 0 comments
I'm looking at this page https://combinatorylogic.com/table.html (from your presentation) which states that phoenix / big phi is
λabcd.a(bd)(cd)
and this source cooberates this https://blog.lahteenmaki.net/combinator-birds.html
Φ x y z w = x (y w) (z w)
Both of these statements say the same thing, in that, you take the last function parameters, apply w to them, and then pass their results to x, which is assumed to have an arity of 2.
This repos version is this:
auto _phi = [](auto f, auto g, auto h) { return [=](auto x) { return g(f(x), h(x)); }; };
which I believe translates to:
λfghx.g(fx)(hx)
which is the same as
λabcd.b(ad)(cd)
which does not match up with the definition from https://combinatorylogic.com/table.html. I want to clarify whether there is an error here, or there's a reason the definition looks different here.