Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/contrib/lua-5.1.5/test/factorial.lua
3203 views
1
-- function closures are powerful
2
3
-- traditional fixed-point operator from functional programming
4
Y = function (g)
5
local a = function (f) return f(f) end
6
return a(function (f)
7
return g(function (x)
8
local c=f(f)
9
return c(x)
10
end)
11
end)
12
end
13
14
15
-- factorial without recursion
16
F = function (f)
17
return function (n)
18
if n == 0 then return 1
19
else return n*f(n-1) end
20
end
21
end
22
23
factorial = Y(F) -- factorial is the fixed point of F
24
25
-- now test it
26
function test(x)
27
io.write(x,"! = ",factorial(x),"\n")
28
end
29
30
for n=0,16 do
31
test(n)
32
end
33
34