RosettaCodeData/Task/Y-combinator/Swift/y-combinator-2.swift
2023-07-01 13:44:08 -04:00

5 lines
199 B
Swift

func Y<A, B>(f: (A -> B) -> A -> B) -> A -> B {
typealias RecursiveFunc = Any -> A -> B
let r : RecursiveFunc = { (z: Any) in let w = z as! RecursiveFunc; return f { w(w)($0) } }
return r(r)
}