summaryrefslogtreecommitdiff
path: root/lua_benchmark/tests/Lua-Benchmarks/fixpoint-fact.lua
diff options
context:
space:
mode:
authorMatthew Sotoudeh <matthew@masot.net>2024-05-17 15:57:30 -0700
committerMatthew Sotoudeh <matthew@masot.net>2024-05-17 15:57:30 -0700
commitd068f0b3c11348a50c18af1ee3b0d2e5f38c4faf (patch)
treedb777acca2336f8c279e9f09346f02de7ddaa0e9 /lua_benchmark/tests/Lua-Benchmarks/fixpoint-fact.lua
parent221b05e7a86faa38036429d5fbfc8b0779eb5382 (diff)
lua benchmarks
Diffstat (limited to 'lua_benchmark/tests/Lua-Benchmarks/fixpoint-fact.lua')
-rw-r--r--lua_benchmark/tests/Lua-Benchmarks/fixpoint-fact.lua24
1 files changed, 24 insertions, 0 deletions
diff --git a/lua_benchmark/tests/Lua-Benchmarks/fixpoint-fact.lua b/lua_benchmark/tests/Lua-Benchmarks/fixpoint-fact.lua
new file mode 100644
index 0000000..743a67c
--- /dev/null
+++ b/lua_benchmark/tests/Lua-Benchmarks/fixpoint-fact.lua
@@ -0,0 +1,24 @@
+-- fixed-point operator
+local Z = function (le)
+ local a = function (f)
+ return le(function (x) return f(f)(x) end)
+ end
+ return a(a)
+ end
+
+
+-- non-recursive factorial
+
+local F = function (f)
+ return function (n)
+ if n == 0 then return 1
+ else return n*f(n-1) end
+ end
+ end
+
+local fat = Z(F)
+
+local s = 0
+for i = 1, arg[1] or 100 do s = s + fat(i) end
+print(s)
+
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback