Y combinator: Difference between revisions

Undo revision 287262 by Kamilk (talk)
No edit summary
(Undo revision 287262 by Kamilk (talk))
Line 3,144:
 
=={{header|Scala}}==
Credit goes to httpsthe thread in [http://stackoverflowscala-blogs.comorg/a2008/533796509/5251078y-combinator-in-scala.html scala blog]
<lang scala>def Y[A, B](f: (A => B) => (A => B): A) => B = f(Y(f))(_)</lang>{
case class W(wf: W=>A=>B) {
def apply(w: W) = wf(w)
}
val g: W=>A=>B = w => f(w(w))(_)
g(W(g))
}</lang>
Example
<lang scala>val fac = Y[Int, Int](f => i => if (i <= 0) 1 else f(i - 1) * i)
Anonymous user