diff options
author | Matthew Sotoudeh <matthew@masot.net> | 2024-05-17 15:57:30 -0700 |
---|---|---|
committer | Matthew Sotoudeh <matthew@masot.net> | 2024-05-17 15:57:30 -0700 |
commit | d068f0b3c11348a50c18af1ee3b0d2e5f38c4faf (patch) | |
tree | db777acca2336f8c279e9f09346f02de7ddaa0e9 /lua_benchmark/tests/Lua-Benchmarks/fixpoint-fact.lua | |
parent | 221b05e7a86faa38036429d5fbfc8b0779eb5382 (diff) |
lua benchmarks
Diffstat (limited to 'lua_benchmark/tests/Lua-Benchmarks/fixpoint-fact.lua')
-rw-r--r-- | lua_benchmark/tests/Lua-Benchmarks/fixpoint-fact.lua | 24 |
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)
+
|