diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2008-12-18 14:54:57 +0000 |
---|---|---|
committer | Jelmer Vernooij <jelmer@samba.org> | 2008-12-18 14:54:57 +0000 |
commit | d14c8604653d39dd25736279d34930ee7a3ae103 (patch) | |
tree | 626f700b9b42b798ed7459a5cba5cd27aca9753e /source3/lua-5.1.4/test/factorial.lua | |
parent | 0c0b9c738f0fc1bf8aa64533a5e4e0635b84f58f (diff) | |
parent | fc31f2c5269fd405be96b9a036baf35a60141ccf (diff) | |
download | samba-d14c8604653d39dd25736279d34930ee7a3ae103.tar.gz samba-d14c8604653d39dd25736279d34930ee7a3ae103.tar.bz2 samba-d14c8604653d39dd25736279d34930ee7a3ae103.zip |
Merge branch 'master' of ssh://git.samba.org/data/git/samba into pyregistry
Diffstat (limited to 'source3/lua-5.1.4/test/factorial.lua')
-rw-r--r-- | source3/lua-5.1.4/test/factorial.lua | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/source3/lua-5.1.4/test/factorial.lua b/source3/lua-5.1.4/test/factorial.lua new file mode 100644 index 0000000000..7c4cf0fa45 --- /dev/null +++ b/source3/lua-5.1.4/test/factorial.lua @@ -0,0 +1,32 @@ +-- 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 |