【发布时间】:2019-04-28 17:39:39
【问题描述】:
我想详细了解一下我们是如何从 Y-combinator 的 lambda 演算表达式中得到的:
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)
我对函数式编程很陌生,但我对 lambda 演算以及替换过程的工作原理有相当的了解。然而,我很难理解我们是如何从正式表达到实现的。
此外,我很想知道如何告诉我的函数的类型和数量 参数及其返回类型 的任何 lambda?
【问题讨论】:
-
你在哪里找到了实现?通过直接在 Y 中递归看起来像是“作弊”。
标签: scala recursion functional-programming lambda-calculus y-combinator