diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-01-21 22:40:55 +0100 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-01-21 22:40:55 +0100 |
| commit | 5d8dfe892a2ea89f706ee140c3bdcfd89fe03fda (patch) | |
| tree | 1acdfa5220cd13b7be43a2a01368e80d306473ca /examples/redis-unstable/deps/lua/test/factorial.lua | |
| parent | c7ab12bba64d9c20ccd79b132dac475f7bc3923e (diff) | |
| download | crep-5d8dfe892a2ea89f706ee140c3bdcfd89fe03fda.tar.gz | |
Add Redis source code for testing
Diffstat (limited to 'examples/redis-unstable/deps/lua/test/factorial.lua')
| -rw-r--r-- | examples/redis-unstable/deps/lua/test/factorial.lua | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/examples/redis-unstable/deps/lua/test/factorial.lua b/examples/redis-unstable/deps/lua/test/factorial.lua new file mode 100644 index 0000000..7c4cf0f --- /dev/null +++ b/examples/redis-unstable/deps/lua/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 |
