Y-combinator のラムダ計算式からどのように取得したかを詳細に理解したいと思います:
Y = λf.(λx.f (x x)) (λx.f (x x))
次の実装に (Scala で) :
def Y[A, B](f: (A => B) => A => B): A => B = (x: A) => f(Y(f))(x)
私は関数型プログラミングにはかなり慣れていませんが、ラムダ計算と置換プロセスがどのように機能するかについては十分に理解しています。ただし、形式的な式から実装に至るまでの経緯を理解するのに苦労しています。
その上、関数の引数の型と数、およびラムダの戻り値の型を伝える方法を知りたいですか?