root/src/lua/test/factorial.lua

Revision 22d1941d0ca5ba7027cdfa51ce34bd1d8fb1931e, 0.7 kB (checked in by Theo Schlossnagle <jesus@omniti.com>, 7 years ago)

take the version out... it is what it is

  • Property mode set to 100644
Line 
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
Note: See TracBrowser for help on using the browser.