Z(Y) combinator is implementing recursion using by beta-conversion. So I think implementing Z(Y) combinator using language recursion future is not real Z(Y) combinator.
Following example is Z combinator in scala not using language recursion future.

  (
    ((f: Any) =>
      ((x: Any) => f.asInstanceOf[Any=>Any=>Any]((y:Any) => x.asInstanceOf[Any=>Any=>Any](x)(y)))
      ((x: Any) => f.asInstanceOf[Any=>Any=>Any]((y:Any) => x.asInstanceOf[Any=>Any=>Any](x)(y)))
    )
    ((f: Int=>Int) => (n: Int) => if (n == 0) 1 else n * f(n - 1))
    (7)
  )

Home