Module:UtilsFunction: Difference between revisions
Jump to navigation
Jump to search
PhantomCaleb (talk | contribs) (Created page with "local p = {} function p.noop(...) return unpack({...}) end -- @args {fn1, fn2, ..., fnN} -- @returns A single function whose arguments are passed to fn1. Output of fn1 i...") |
PhantomCaleb (talk | contribs) mNo edit summary |
||
Line 2: | Line 2: | ||
function p.noop(...) | function p.noop(...) | ||
return | return ... | ||
end | end | ||
Revision as of 03:00, 11 March 2020
The functions in this module return other functions, namely iterators. It also contains utility functions for functional programming. Lua error in Module:Documentation/Module at line 630: attempt to call field 'memoize' (a nil value).
local p = {}
function p.noop(...)
return ...
end
-- @args {fn1, fn2, ..., fnN}
-- @returns A single function whose arguments are passed to fn1. Output of fn1 is passed to fn2, and so on.
-- Similar to https://lodash.com/docs/#flow
function p.pipe(...)
local functions = {...}
return function(...)
local state = {...}
for _, fn in ipairs(functions) do
state = {fn(unpack(state))}
end
return unpack(state)
end
end
-- http://lua-users.org/wiki/RangeIterator
function p.range(a, b, step)
if not b then
b = a
a = 1
end
step = step or 1
local f =
step > 0 and
function(_, lastvalue)
local nextvalue = lastvalue + step
if nextvalue <= b then return nextvalue end
end or
step < 0 and
function(_, lastvalue)
local nextvalue = lastvalue + step
if nextvalue >= b then return nextvalue end
end or
function(_, lastvalue) return lastvalue end
return f, nil, a - step
end
return p