Variadic fixed-point combinator: Difference between revisions

julia example
(julia example)
Line 68:
{{out}}
<code>[0,1,2,0,1,2,0,1,2,0,1]</code>
 
=={{header|Julia}}==
{{trans|Wren}}
<syntaxhighlight lang="julia">let
Y = (a) -> [((x) -> () -> x(Y(a)))(f) for f in a]
 
even_odd_fix = [
(f) -> begin
(n) -> n == 0 || f[begin+1]()(n - 1)
end,
(f) -> begin
(n) -> n != 0 && f[begin]()(n - 1)
end,
]
 
collatz_fix = [
(f) -> begin
(n, d) -> n == 1 ? d : f[isodd(n)+2]()(n, d + 1)
end,
(f) -> begin
(n, d) -> f[begin]()(n ÷ 2, d)
end,
(f) -> begin
(n, d) -> f[begin]()(3 * n + 1, d)
end,
]
 
evenodd = [f() for f in Y(even_odd_fix)]
collatz = Y(collatz_fix)[begin]()
 
for i = 1:10
e = evenodd[begin](i)
o = evenodd[begin+1](i)
c = collatz(i, 0)
println(lpad(i, 2), ": Even: $e Odd: $o Collatz: $c")
end
end
 
</syntaxhighlight>{{out}}
<pre>
1: Even: false Odd: true Collatz: 0
2: Even: true Odd: false Collatz: 1
3: Even: false Odd: true Collatz: 7
4: Even: true Odd: false Collatz: 2
5: Even: false Odd: true Collatz: 5
6: Even: true Odd: false Collatz: 8
7: Even: false Odd: true Collatz: 16
8: Even: true Odd: false Collatz: 3
9: Even: false Odd: true Collatz: 19
10: Even: true Odd: false Collatz: 6
</pre>
 
=={{header|Wren}}==
4,105

edits