RosettaCodeData/Task/Y-combinator/Sidef/y-combinator.sidef

8 lines
245 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
var y = ->(f) {->(g) {g(g)}(->(g) { f(->(*args) {g(g)(args...)})})}
var fac = ->(f) { ->(n) { n < 2 ? 1 : (n * f(n-1)) } }
say 10.of { |i| y(fac)(i) }
var fib = ->(f) { ->(n) { n < 2 ? n : (f(n-2) + f(n-1)) } }
say 10.of { |i| y(fib)(i) }