Blame |
    Last modification |
    View Log
    | Download
  
  
- -- function closures are powerful 
-   
- -- traditional fixed-point operator from functional programming 
- Y = function (g) 
-       local a = function (f) return f(f) end 
-       return a(function (f) 
-                  return g(function (x) 
-                              local c=f(f) 
-                              return c(x) 
-                            end) 
-                end) 
- end 
-   
-   
- -- factorial without recursion 
- F = function (f) 
-       return function (n) 
-                if n == 0 then return 1 
-                else return n*f(n-1) end 
-              end 
-     end 
-   
- factorial = Y(F)   -- factorial is the fixed point of F 
-   
- -- now test it 
- function test(x) 
-         io.write(x,"! = ",factorial(x),"\n") 
- end 
-   
- for n=0,16 do 
-         test(n) 
- end 
-