开源软件名称(OpenSource Name):luafun/luafun开源软件地址(OpenSource Url):https://github.com/luafun/luafun开源编程语言(OpenSource Language):Lua 100.0%开源软件介绍(OpenSource Introduction):Lua FunctionalLua Fun is a high-performance functional programming library for Lua designed with LuaJIT's trace compiler in mind. Lua Fun provides a set of more than 50 programming primitives typically
found in languages like Standard ML, Haskell, Erlang, JavaScript, Python and
even Lisp. High-order functions such as Let's see an example: > -- Functional style
> require "fun" ()
> -- calculate sum(x for x^2 in 1..n)
> n = 100
> print(reduce(operator.add, 0, map(function(x) return x^2 end, range(n))))
328350
> -- Object-oriented style
> local fun = require "fun"
> -- calculate sum(x for x^2 in 1..n)
> print(fun.range(n):map(function(x) return x^2 end):reduce(operator.add, 0))
328350 Lua Fun takes full advantage of the innovative tracing JIT compiler
to achieve transcendental performance on nested functional expressions.
Functional compositions and high-order functions can be translated into
efficient machine code. Can you believe it? Just try to run the example
above with -- skip some initilization code --
->LOOP:
0bcaffd0 movaps xmm5, xmm7
0bcaffd3 movaps xmm7, xmm1
0bcaffd6 addsd xmm7, xmm5
0bcaffda ucomisd xmm7, xmm0
0bcaffde jnb 0x0bca0024 ->5
0bcaffe4 movaps xmm5, xmm7
0bcaffe7 mulsd xmm5, xmm5
0bcaffeb addsd xmm6, xmm5
0bcaffef jmp 0x0bcaffd0 ->LOOP
---- TRACE 1 stop -> loop The functional chain above was translated by LuaJIT to (!) one machine loop containing just 10 CPU assembly instructions without CALL. Unbelievable! Readable? Efficient? Can your Python/Ruby/V8 do better? StatusLua Fun is in an early alpha stage. The library fully documented and covered with unit tests. LuaJIT 2.1 alpha is recommended. The library designed in mind of fact that LuaJIT traces tail-, up- and down-recursion and has a lot of byte code optimizations. Lua 5.1-5.3 are also supported. This is master (development) branch. API may be changed without any special
notice. Please use stable branch for your production deployments.
If you still want to use master, please don't forget to grep Please check out documentation for more information. MiscLua Fun is distributed under the MIT/X11 License - (same as Lua and LuaJIT). The library was written to use with Tarantool - an efficient in-memory store and an asynchronous Lua application server. See Also
Please "Star" the project on GitHub to help it to survive! Thanks! Lua Fun. Simple, Efficient and Functional. In Lua. With JIT. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论