diff options
author | Yonaba <roland.yonaba@gmail.com> | 2018-08-23 13:16:57 +0300 |
---|---|---|
committer | Yonaba <roland.yonaba@gmail.com> | 2018-08-23 13:16:57 +0300 |
commit | 68cbec82057d85082d889b5b80bd99322000b209 (patch) | |
tree | a35a4b9eab2762c4221bb89c3e032e5ae5eb19df | |
parent | 58a47a72160ac20bf71d06a814ab63d005eb53e7 (diff) |
Updates and fixes
-rw-r--r-- | .luacov | 2 | ||||
-rw-r--r-- | doc/index.html | 2 | ||||
-rw-r--r-- | doc/manual/tutorial.md.html | 2 | ||||
-rw-r--r-- | moses.lua | 18 | ||||
-rw-r--r-- | moses_min.lua | 982 |
5 files changed, 498 insertions, 508 deletions
@@ -18,7 +18,7 @@ return { runreport = true, -- Delete stats file after reporting? - deletestats = true, + deletestats = false, -- Patterns for files to include when reporting -- all will be included if nothing is listed diff --git a/doc/index.html b/doc/index.html index 7108fb6..8dee3c0 100644 --- a/doc/index.html +++ b/doc/index.html @@ -6559,7 +6559,7 @@ </div> <!-- id="main" --> <div id="about"> <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i> -<i style="float:right;">Last updated 2018-08-22 20:49:28 </i> +<i style="float:right;">Last updated 2018-08-23 10:16:23 </i> </div> <!-- id="about" --> </div> <!-- id="container" --> </body> diff --git a/doc/manual/tutorial.md.html b/doc/manual/tutorial.md.html index 6cc4cdd..334b0b7 100644 --- a/doc/manual/tutorial.md.html +++ b/doc/manual/tutorial.md.html @@ -2862,7 +2862,7 @@ M.import(context, <span class="keyword">true</span>) </div> <!-- id="main" --> <div id="about"> <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i> -<i style="float:right;">Last updated 2018-08-22 20:49:28 </i> +<i style="float:right;">Last updated 2018-08-23 10:16:23 </i> </div> <!-- id="about" --> </div> <!-- id="container" --> </body> @@ -9,7 +9,7 @@ local _MODULEVERSION = '2.0.0' -- Internalisation -local next, type, select, pcall = next, type, select, pcall +local next, type, pcall = next, type, pcall local setmetatable, getmetatable = setmetatable, getmetatable local t_insert, t_sort = table.insert, table.sort local t_remove,t_concat = table.remove, table.concat @@ -1958,10 +1958,10 @@ end -- @param[opt] n the number of times the iterator should run -- @return an iterator function function M.iterator(f, value, n) - local count = 0 + local cnt = 0 return function() - count = count + 1 - if n and count > n then return end + cnt = cnt + 1 + if n and cnt > n then return end value = f(value) return value end @@ -2114,8 +2114,8 @@ function M.overArgs(f,...) return function(...) local _args = {...} for i = 1,#_argf do - local f = _argf[i] - if _args[i] then _args[i] = f(_args[i]) end + local func = _argf[i] + if _args[i] then _args[i] = func(_args[i]) end end return f(unpack(_args)) end @@ -2507,7 +2507,7 @@ end function M.isCallable(obj) return ((type(obj) == 'function') or - ((type(obj) == 'table') and getmetatable(obj) and getmetatable(obj).__call~=nil) or + ((type(obj) == 'table') and getmetatable(obj) and getmetatable(obj).__call~=nil) or false) end @@ -2756,7 +2756,7 @@ do f.import = function(context, noConflict) context = context or _ENV or _G local funcs = M.functions() - for k, fname in ipairs(funcs) do + for k, fname in ipairs(funcs) do if rawget(context, fname)~= nil then if not noConflict then rawset(context, fname, M[fname]) @@ -2775,5 +2775,5 @@ do Moses._DESCRIPTION = 'utility-belt library for functional programming in Lua' return Moses - + end diff --git a/moses_min.lua b/moses_min.lua index 1fd6146..fe6a9b3 100644 --- a/moses_min.lua +++ b/moses_min.lua @@ -1,521 +1,511 @@ -local e='2.0.0'local v,l6Sm5,oUA,QFKEzBf=next,type,select,pcall -local odpE,p=setmetatable,getmetatable;local lIpFkbLI,JdUtcU=table.insert,table.sort -local GQLN,toXyq=table.remove,table.concat;local S9TO,pS78Y,BCf7=math.randomseed,math.random,math.huge -local RlMSrmdD,VCD,OV7,X83a=math.floor,math.max,math.min,math.ceil;local PizLA9mj=coroutine.wrap;local hUL=coroutine.yield;local l=rawget -local kyWtqIf0=table.unpack or unpack;local zupvsz,Mw=pairs,ipairs;local S1wg_DG=error;local sf0=os.clock;local qxZa6ozV={}local function hgW2H5(BKLwtAVx,BMZNmf0) -return BKLwtAVx>BMZNmf0 end -local function z5i2i(qL9C,Colg)return qL9C<Colg end -local function MGSnnzOI(ex2xo17)local I=0;for K66,Tq in zupvsz(ex2xo17)do I=I+1 end;return I end -local function B0o5xpg7(jmB,bjO,QoYPziln,...)QoYPziln=QoYPziln or qxZa6ozV.identity;local Hj -for KBlIVi,OR8it1 in zupvsz(jmB)do if not Hj then -Hj=QoYPziln(OR8it1,...)else local GAqAsa=QoYPziln(OR8it1,...) -Hj=bjO(Hj,GAqAsa)and Hj or GAqAsa end end;return Hj end -local function VQT(Oc_,Qj,Ybp8,ZmzyNm) -for akG0mUnS=0,#Oc_,Qj do -local iy=qxZa6ozV.slice(Oc_,akG0mUnS+1,akG0mUnS+Qj)if#iy>0 then -while(#iy<Qj and ZmzyNm)do iy[#iy+1]=ZmzyNm end;Ybp8(iy)end end end -local function Id(gc7SaW,FnbJWd2,cpdLk,FbQX) -for ejMVLYZd=0,#gc7SaW,FnbJWd2-1 do -local eS0X=qxZa6ozV.slice(gc7SaW,ejMVLYZd+1,ejMVLYZd+FnbJWd2) -if#eS0X>0 and ejMVLYZd+1 <#gc7SaW then while -(#eS0X<FnbJWd2 and FbQX)do eS0X[#eS0X+1]=FbQX end;cpdLk(eS0X)end end end -local function Ub(XDQS4ASf,IiNU,gUfudNUg,d3) -for gTOcAHv=0,#XDQS4ASf,1 do -local vY_4HT1n=qxZa6ozV.slice(XDQS4ASf,gTOcAHv+1,gTOcAHv+IiNU) -if#vY_4HT1n>0 and gTOcAHv+IiNU<=#XDQS4ASf then -while(#vY_4HT1n< -IiNU and d3)do vY_4HT1n[#vY_4HT1n+1]=d3 end;gUfudNUg(vY_4HT1n)end end end -local function qJExeUn2(DzPbzg,UMD,K3ZE7Ou)if UMD==0 then K3ZE7Ou(DzPbzg)end;for fBI=1,UMD do -DzPbzg[UMD],DzPbzg[fBI]=DzPbzg[fBI],DzPbzg[UMD]qJExeUn2(DzPbzg,UMD-1,K3ZE7Ou) -DzPbzg[UMD],DzPbzg[fBI]=DzPbzg[fBI],DzPbzg[UMD]end end;local function cmWo_v(wMSY)return wMSY>=0 and 1 or-1 end;local RoXZEsn=-1 -qxZa6ozV.operator={} -qxZa6ozV.operator.add=function(_nD2rl,aVh8xSly)return _nD2rl+aVh8xSly end -qxZa6ozV.operator.sub=function(i,P_NNVDyt)return i-P_NNVDyt end -qxZa6ozV.operator.mul=function(cVEyN,uj2AiF)return cVEyN*uj2AiF end -qxZa6ozV.operator.div=function(W,lbHN2)return W/lbHN2 end -qxZa6ozV.operator.mod=function(PwgW3lfq,z)return PwgW3lfq%z end;qxZa6ozV.operator.exp=function(K,xx)return K^xx end -qxZa6ozV.operator.pow=qxZa6ozV.operator.exp;qxZa6ozV.operator.unm=function(aYb)return-aYb end -qxZa6ozV.operator.neg=qxZa6ozV.operator.unm -qxZa6ozV.operator.floordiv=function(JM2,bmAjLT)return RlMSrmdD(JM2/bmAjLT)end -qxZa6ozV.operator.intdiv=function(eExYnwnh,XMBmJyiP) -return -eExYnwnh>=0 and RlMSrmdD(eExYnwnh/XMBmJyiP)or X83a(eExYnwnh/XMBmJyiP)end -qxZa6ozV.operator.eq=function(nowqEU6m,iKD8V)return nowqEU6m==iKD8V end -qxZa6ozV.operator.neq=function(YtRS,A)return YtRS~=A end -qxZa6ozV.operator.lt=function(mHJ,Q57BJ)return mHJ<Q57BJ end -qxZa6ozV.operator.gt=function(vM,JeGCDX)return vM>JeGCDX end -qxZa6ozV.operator.le=function(A,UFZlp)return A<=UFZlp end -qxZa6ozV.operator.ge=function(VsrKM,uhIq)return VsrKM>=uhIq end -qxZa6ozV.operator.land=function(EEOUzhy,hbrt)return EEOUzhy and hbrt end;qxZa6ozV.operator.lor=function(D,Q)return D or Q end;qxZa6ozV.operator.lnot=function(mRqle)return -not mRqle end -qxZa6ozV.operator.concat=function(sBEZ8,WhHB0ygh)return -sBEZ8 ..WhHB0ygh end -qxZa6ozV.operator.length=function(rYSD0)return#rYSD0 end;qxZa6ozV.operator.len=qxZa6ozV.operator.length -function qxZa6ozV.clear(BIL5)for GQLlkH in -zupvsz(BIL5)do BIL5[GQLlkH]=nil end;return BIL5 end;function qxZa6ozV.each(aN4J2zRQ,eWca,...) -for AGUR2QK,FK in zupvsz(aN4J2zRQ)do eWca(FK,AGUR2QK,...)end end -function qxZa6ozV.eachi(_,YQZ729qQ,...) -local rZh2wG=qxZa6ozV.sort(qxZa6ozV.select(qxZa6ozV.keys(_),qxZa6ozV.isInteger))for sef4eW6Q,Z in Mw(rZh2wG)do YQZ729qQ(_[Z],Z,...)end end -function qxZa6ozV.at(UacO6D,...)local FdnzjW={}for o,lMAL in Mw({...})do -FdnzjW[#FdnzjW+1]=UacO6D[lMAL]end;return FdnzjW end -function qxZa6ozV.adjust(CpQ,L,HnQS_Z,...)if(CpQ[L]==nil)then -S1wg_DG("key not existing in table")end;local rib=qxZa6ozV.clone(CpQ) -rib[L]= -l6Sm5(HnQS_Z)=='function'and HnQS_Z(rib[L],...)or HnQS_Z;return rib end -function qxZa6ozV.count(w,YT6wZ)if YT6wZ==nil then return qxZa6ozV.size(w)end -local MGSnnzOI=0;for VYv,gU in zupvsz(w)do -if qxZa6ozV.isEqual(gU,YT6wZ)then MGSnnzOI=MGSnnzOI+1 end end;return MGSnnzOI end -function qxZa6ozV.countf(JzG8W4Ya,dZ54oc,...)local MGSnnzOI=0;for v_LoR,gRY in zupvsz(JzG8W4Ya)do if dZ54oc(gRY,v_LoR,...)then -MGSnnzOI=MGSnnzOI+1 end end;return -MGSnnzOI end -function qxZa6ozV.cycle(z,ad)ad=ad or 1;if ad<=0 then return qxZa6ozV.noop end;local Ui0Qa,g -local Itx=0 +local SWFtRywD='2.0.0'local e,v,l6Sm5=next,type,pcall;local oUA,QFKEzBf=setmetatable,getmetatable +local odpE,p=table.insert,table.sort;local lIpFkbLI,JdUtcU=table.remove,table.concat +local GQLN,toXyq,S9TO=math.randomseed,math.random,math.huge;local pS78Y,BCf7,RlMSrmdD,VCD=math.floor,math.max,math.min,math.ceil +local OV7=coroutine.wrap;local X83a=coroutine.yield;local PizLA9mj=rawget +local hUL=table.unpack or unpack;local l,kyWtqIf0=pairs,ipairs;local zupvsz=error;local Mw=os.clock;local S1wg_DG={}local function sf0(cmWo_v,RoXZEsn) +return cmWo_v>RoXZEsn end +local function qxZa6ozV(BKLwtAVx,BMZNmf0)return BKLwtAVx<BMZNmf0 end +local function hgW2H5(qL9C)local Colg=0;for ex2xo17,I in l(qL9C)do Colg=Colg+1 end;return Colg end +local function z5i2i(K66,Tq,jmB,...)jmB=jmB or S1wg_DG.identity;local bjO;for QoYPziln,Hj in l(K66)do +if not bjO then bjO=jmB(Hj,...)else +local KBlIVi=jmB(Hj,...)bjO=Tq(bjO,KBlIVi)and bjO or KBlIVi end end;return bjO end +local function MGSnnzOI(OR8it1,GAqAsa,Oc_,Qj) +for Ybp8=0,#OR8it1,GAqAsa do +local ZmzyNm=S1wg_DG.slice(OR8it1,Ybp8+1,Ybp8+GAqAsa) +if#ZmzyNm>0 then while(#ZmzyNm<GAqAsa and Qj)do +ZmzyNm[#ZmzyNm+1]=Qj end;Oc_(ZmzyNm)end end end +local function B0o5xpg7(akG0mUnS,iy,gc7SaW,FnbJWd2) +for cpdLk=0,#akG0mUnS,iy-1 do +local FbQX=S1wg_DG.slice(akG0mUnS,cpdLk+1,cpdLk+iy)if#FbQX>0 and cpdLk+1 <#akG0mUnS then while +(#FbQX<iy and FnbJWd2)do FbQX[#FbQX+1]=FnbJWd2 end +gc7SaW(FbQX)end end end +local function VQT(ejMVLYZd,eS0X,XDQS4ASf,IiNU) +for gUfudNUg=0,#ejMVLYZd,1 do +local d3=S1wg_DG.slice(ejMVLYZd,gUfudNUg+1,gUfudNUg+eS0X) +if#d3 >0 and gUfudNUg+eS0X<=#ejMVLYZd then while +(#d3 <eS0X and IiNU)do d3[#d3+1]=IiNU end;XDQS4ASf(d3)end end end +local function Id(gTOcAHv,vY_4HT1n,DzPbzg)if vY_4HT1n==0 then DzPbzg(gTOcAHv)end +for UMD=1,vY_4HT1n do +gTOcAHv[vY_4HT1n],gTOcAHv[UMD]=gTOcAHv[UMD],gTOcAHv[vY_4HT1n]Id(gTOcAHv,vY_4HT1n-1,DzPbzg) +gTOcAHv[vY_4HT1n],gTOcAHv[UMD]=gTOcAHv[UMD],gTOcAHv[vY_4HT1n]end end;local function Ub(K3ZE7Ou)return K3ZE7Ou>=0 and 1 or-1 end +local qJExeUn2=-1;S1wg_DG.operator={} +S1wg_DG.operator.add=function(fBI,wMSY)return fBI+wMSY end +S1wg_DG.operator.sub=function(_nD2rl,aVh8xSly)return _nD2rl-aVh8xSly end +S1wg_DG.operator.mul=function(i,P_NNVDyt)return i*P_NNVDyt end +S1wg_DG.operator.div=function(cVEyN,uj2AiF)return cVEyN/uj2AiF end +S1wg_DG.operator.mod=function(W,lbHN2)return W%lbHN2 end +S1wg_DG.operator.exp=function(PwgW3lfq,z)return PwgW3lfq^z end;S1wg_DG.operator.pow=S1wg_DG.operator.exp;S1wg_DG.operator.unm=function(K)return +-K end +S1wg_DG.operator.neg=S1wg_DG.operator.unm +S1wg_DG.operator.floordiv=function(xx,aYb)return pS78Y(xx/aYb)end +S1wg_DG.operator.intdiv=function(JM2,bmAjLT)return JM2 >=0 and pS78Y(JM2/bmAjLT)or +VCD(JM2/bmAjLT)end +S1wg_DG.operator.eq=function(eExYnwnh,XMBmJyiP)return eExYnwnh==XMBmJyiP end +S1wg_DG.operator.neq=function(nowqEU6m,iKD8V)return nowqEU6m~=iKD8V end +S1wg_DG.operator.lt=function(YtRS,A)return YtRS<A end +S1wg_DG.operator.gt=function(mHJ,Q57BJ)return mHJ>Q57BJ end +S1wg_DG.operator.le=function(vM,JeGCDX)return vM<=JeGCDX end +S1wg_DG.operator.ge=function(A,UFZlp)return A>=UFZlp end +S1wg_DG.operator.land=function(VsrKM,uhIq)return VsrKM and uhIq end +S1wg_DG.operator.lor=function(EEOUzhy,hbrt)return EEOUzhy or hbrt end;S1wg_DG.operator.lnot=function(D)return not D end;S1wg_DG.operator.concat=function(Q,mRqle)return +Q..mRqle end;S1wg_DG.operator.length=function(sBEZ8)return +#sBEZ8 end +S1wg_DG.operator.len=S1wg_DG.operator.length;function S1wg_DG.clear(WhHB0ygh)for rYSD0 in l(WhHB0ygh)do WhHB0ygh[rYSD0]=nil end +return WhHB0ygh end +function S1wg_DG.each(BIL5,GQLlkH,...)for aN4J2zRQ,eWca in l(BIL5)do +GQLlkH(eWca,aN4J2zRQ,...)end end +function S1wg_DG.eachi(AGUR2QK,FK,...) +local _=S1wg_DG.sort(S1wg_DG.select(S1wg_DG.keys(AGUR2QK),S1wg_DG.isInteger)) +for YQZ729qQ,rZh2wG in kyWtqIf0(_)do FK(AGUR2QK[rZh2wG],rZh2wG,...)end end;function S1wg_DG.at(sef4eW6Q,...)local Z={} +for UacO6D,FdnzjW in kyWtqIf0({...})do Z[#Z+1]=sef4eW6Q[FdnzjW]end;return Z end +function S1wg_DG.adjust(o,lMAL,CpQ,...) +if( +o[lMAL]==nil)then zupvsz("key not existing in table")end;local L=S1wg_DG.clone(o)L[lMAL]= +v(CpQ)=='function'and CpQ(L[lMAL],...)or CpQ;return L end +function S1wg_DG.count(HnQS_Z,rib) +if rib==nil then return S1wg_DG.size(HnQS_Z)end;local hgW2H5=0;for w,YT6wZ in l(HnQS_Z)do +if S1wg_DG.isEqual(YT6wZ,rib)then hgW2H5=hgW2H5+1 end end;return hgW2H5 end +function S1wg_DG.countf(VYv,gU,...)local hgW2H5=0;for JzG8W4Ya,dZ54oc in l(VYv)do +if gU(dZ54oc,JzG8W4Ya,...)then hgW2H5=hgW2H5+1 end end;return hgW2H5 end +function S1wg_DG.cycle(v_LoR,gRY)gRY=gRY or 1;if gRY<=0 then return S1wg_DG.noop end;local z,ad +local Ui0Qa=0 while true do return -function()Ui0Qa=Ui0Qa and v(z,Ui0Qa)or v(z) -g=not g and Ui0Qa or g;if ad then Itx=(Ui0Qa==g)and Itx+1 or Itx -if Itx>ad then return end end;return z[Ui0Qa],Ui0Qa end end end -function qxZa6ozV.map(JpoaGH,cyAcCT,...)local RCA={} -for L46S,GKTYT in zupvsz(JpoaGH)do -local hXSTz8FJ,C24r7o4G,b_4Q38cU=L46S,cyAcCT(GKTYT,L46S,...) -RCA[b_4Q38cU and C24r7o4G or hXSTz8FJ]=b_4Q38cU or C24r7o4G end;return RCA end -function qxZa6ozV.reduce(N,JbPw,j)for S,cg4FV7bl in zupvsz(N)do -if j==nil then j=cg4FV7bl else j=JbPw(j,cg4FV7bl)end end;return j end -function qxZa6ozV.reduceby(flf9sWX,uNoS,ZWoH9V08,RWo,...)return -qxZa6ozV.reduce(qxZa6ozV.select(flf9sWX,ZWoH9V08,...),uNoS,RWo)end -function qxZa6ozV.reduceRight(GWBQL,PCldTUn9,sO_)return -qxZa6ozV.reduce(qxZa6ozV.reverse(GWBQL),PCldTUn9,sO_)end -function qxZa6ozV.mapReduce(ALbdmINL,b,DUgF0E)local vGxJ6f={} -for a4ga2I,syGyB_ in zupvsz(ALbdmINL)do vGxJ6f[a4ga2I]=not DUgF0E and syGyB_ or -b(DUgF0E,syGyB_)DUgF0E=vGxJ6f[a4ga2I]end;return vGxJ6f end -function qxZa6ozV.mapReduceRight(VO,J1r,iBcU3_7D)return -qxZa6ozV.mapReduce(qxZa6ozV.reverse(VO),J1r,iBcU3_7D)end -function qxZa6ozV.include(N,M4V)local _feve=(l6Sm5(M4V)=='function')and M4V or -qxZa6ozV.isEqual;for OPz_7bk,H64aD in zupvsz(N)do if -_feve(H64aD,M4V)then return true end end;return false end -function qxZa6ozV.detect(ny7,QDj6GAX) -local k6pXzd= -(l6Sm5(QDj6GAX)=='function')and QDj6GAX or qxZa6ozV.isEqual -for hsLwu,R in zupvsz(ny7)do if k6pXzd(R,QDj6GAX)then return hsLwu end end end -function qxZa6ozV.where(JKZ,yHbsh) -local d4z=qxZa6ozV.select(JKZ,function(i) -for HyEk4lbh in zupvsz(yHbsh)do if i[HyEk4lbh]~=yHbsh[HyEk4lbh]then return -false end end;return true end)return#d4z>0 and d4z or nil end -function qxZa6ozV.findWhere(PhU,rWwbNge) -local SKxD=qxZa6ozV.detect(PhU,function(o3uQKvJ) -for vAZm in zupvsz(rWwbNge)do if -rWwbNge[vAZm]~=o3uQKvJ[vAZm]then return false end end;return true end)return SKxD and PhU[SKxD]end -function qxZa6ozV.select(q,fFuE,...)local KypMW={}for JJT4nKO,TFLF in zupvsz(q)do if fFuE(TFLF,JJT4nKO,...)then -KypMW[#KypMW+1]=TFLF end end -return KypMW end -function qxZa6ozV.reject(hEoAa,PGN,...)local K2_kF5={} -for YpimJ,Gg7Ttui in zupvsz(hEoAa)do if not PGN(Gg7Ttui,YpimJ,...)then -K2_kF5[#K2_kF5+1]=Gg7Ttui end end;return K2_kF5 end -function qxZa6ozV.all(_,EGeAf,...)for ymP,z5pHKyoa in zupvsz(_)do -if not EGeAf(z5pHKyoa,ymP,...)then return false end end;return true end -function qxZa6ozV.invoke(h,xwT,...)local y33ux={...} +function()z=z and e(v_LoR,z)or e(v_LoR) +ad=not ad and z or ad;if gRY then Ui0Qa=(z==ad)and Ui0Qa+1 or Ui0Qa +if Ui0Qa>gRY then return end end;return v_LoR[z],z end end end +function S1wg_DG.map(g,Itx,...)local JpoaGH={}for cyAcCT,RCA in l(g)do local L46S,GKTYT,hXSTz8FJ=cyAcCT,Itx(RCA,cyAcCT,...) +JpoaGH[hXSTz8FJ and +GKTYT or L46S]=hXSTz8FJ or GKTYT end +return JpoaGH end;function S1wg_DG.reduce(C24r7o4G,b_4Q38cU,N) +for JbPw,j in l(C24r7o4G)do if N==nil then N=j else N=b_4Q38cU(N,j)end end;return N end +function S1wg_DG.reduceby(S,cg4FV7bl,flf9sWX,uNoS,...)return +S1wg_DG.reduce(S1wg_DG.select(S,flf9sWX,...),cg4FV7bl,uNoS)end +function S1wg_DG.reduceRight(ZWoH9V08,RWo,GWBQL)return +S1wg_DG.reduce(S1wg_DG.reverse(ZWoH9V08),RWo,GWBQL)end +function S1wg_DG.mapReduce(PCldTUn9,sO_,ALbdmINL)local b={} +for DUgF0E,vGxJ6f in l(PCldTUn9)do b[DUgF0E]=not ALbdmINL and vGxJ6f or +sO_(ALbdmINL,vGxJ6f)ALbdmINL=b[DUgF0E]end;return b end +function S1wg_DG.mapReduceRight(a4ga2I,syGyB_,VO)return +S1wg_DG.mapReduce(S1wg_DG.reverse(a4ga2I),syGyB_,VO)end +function S1wg_DG.include(J1r,iBcU3_7D)local N=(v(iBcU3_7D)=='function')and iBcU3_7D or +S1wg_DG.isEqual;for M4V,_feve in l(J1r)do if +N(_feve,iBcU3_7D)then return true end end;return false end +function S1wg_DG.detect(OPz_7bk,H64aD) +local ny7=(v(H64aD)=='function')and H64aD or S1wg_DG.isEqual +for QDj6GAX,k6pXzd in l(OPz_7bk)do if ny7(k6pXzd,H64aD)then return QDj6GAX end end end +function S1wg_DG.where(hsLwu,R) +local JKZ=S1wg_DG.select(hsLwu,function(yHbsh)for d4z in l(R)do +if yHbsh[d4z]~=R[d4z]then return false end end;return true end)return#JKZ>0 and JKZ or nil end +function S1wg_DG.findWhere(i,HyEk4lbh) +local PhU=S1wg_DG.detect(i,function(rWwbNge)for SKxD in l(HyEk4lbh)do if HyEk4lbh[SKxD]~=rWwbNge[SKxD]then +return false end end +return true end)return PhU and i[PhU]end +function S1wg_DG.select(o3uQKvJ,vAZm,...)local q={}for fFuE,KypMW in l(o3uQKvJ)do +if vAZm(KypMW,fFuE,...)then q[#q+1]=KypMW end end;return q end +function S1wg_DG.reject(JJT4nKO,TFLF,...)local hEoAa={} +for PGN,K2_kF5 in l(JJT4nKO)do if not TFLF(K2_kF5,PGN,...)then +hEoAa[#hEoAa+1]=K2_kF5 end end;return hEoAa end +function S1wg_DG.all(YpimJ,Gg7Ttui,...)for _,EGeAf in l(YpimJ)do +if not Gg7Ttui(EGeAf,_,...)then return false end end;return true end +function S1wg_DG.invoke(ymP,z5pHKyoa,...)local h={...} return -qxZa6ozV.map(h,function(Ut) -if(l6Sm5(Ut)=='table')then -if Ut[xwT]then +S1wg_DG.map(ymP,function(xwT) +if(v(xwT)=='table')then +if xwT[z5pHKyoa]then if -qxZa6ozV.isCallable(Ut[xwT])then return Ut[xwT](Ut,kyWtqIf0(y33ux))else return Ut[xwT]end else -if qxZa6ozV.isCallable(xwT)then return xwT(Ut,kyWtqIf0(y33ux))end end elseif qxZa6ozV.isCallable(xwT)then return xwT(Ut,kyWtqIf0(y33ux))end end)end -function qxZa6ozV.pluck(GOijBp,oUi)local b2a3={}for xer,SQHAAR in zupvsz(GOijBp)do if SQHAAR[oUi]then -b2a3[#b2a3+1]=SQHAAR[oUi]end end;return b2a3 end -function qxZa6ozV.max(qybRcP1,z,...)return B0o5xpg7(qybRcP1,hgW2H5,z,...)end -function qxZa6ozV.min(N0NaR,FBfW,...)return B0o5xpg7(N0NaR,z5i2i,FBfW,...)end -function qxZa6ozV.same(lnM4,_oDmX_) +S1wg_DG.isCallable(xwT[z5pHKyoa])then return xwT[z5pHKyoa](xwT,hUL(h))else return xwT[z5pHKyoa]end else +if S1wg_DG.isCallable(z5pHKyoa)then return z5pHKyoa(xwT,hUL(h))end end elseif S1wg_DG.isCallable(z5pHKyoa)then return z5pHKyoa(xwT,hUL(h))end end)end +function S1wg_DG.pluck(y33ux,Ut)local GOijBp={}for oUi,b2a3 in l(y33ux)do if b2a3[Ut]then +GOijBp[#GOijBp+1]=b2a3[Ut]end end;return GOijBp end +function S1wg_DG.max(xer,SQHAAR,...)return z5i2i(xer,sf0,SQHAAR,...)end +function S1wg_DG.min(qybRcP1,z,...)return z5i2i(qybRcP1,qxZa6ozV,z,...)end +function S1wg_DG.same(N0NaR,FBfW) return -qxZa6ozV.all(lnM4,function(t)return qxZa6ozV.include(_oDmX_,t)end)and -qxZa6ozV.all(_oDmX_,function(K)return qxZa6ozV.include(lnM4,K)end)end -function qxZa6ozV.sort(ppm021I,ASUXhD)JdUtcU(ppm021I,ASUXhD)return ppm021I end -function qxZa6ozV.sortBy(KCm,u,fDk)local gxYY=u or qxZa6ozV.identity -if -(l6Sm5(u)=='string')then gxYY=function(KCm)return KCm[u]end end;fDk=fDk or z5i2i -JdUtcU(KCm,function(sVMxk,SyD)return fDk(gxYY(sVMxk),gxYY(SyD))end)return KCm end -function qxZa6ozV.groupBy(v4,j7siW,...)local Hl={...}local AP060rq={} -for DIEKD10,lLJ in zupvsz(v4)do -local EicsS=j7siW(lLJ,DIEKD10,kyWtqIf0(Hl))if AP060rq[EicsS]then -AP060rq[EicsS][#AP060rq[EicsS]+1]=lLJ else AP060rq[EicsS]={lLJ}end end;return AP060rq end -function qxZa6ozV.countBy(JubU,L,...)local JKci={} -for SsBe,o in zupvsz(JubU)do local ZOmcmO=L(o,SsBe,...)JKci[ZOmcmO]=( -JKci[ZOmcmO]or 0)+1 end;return JKci end -function qxZa6ozV.size(...)local _G19JrRB={...}local m0r3_J=_G19JrRB[1]return +S1wg_DG.all(N0NaR,function(lnM4)return S1wg_DG.include(FBfW,lnM4)end)and +S1wg_DG.all(FBfW,function(_oDmX_)return S1wg_DG.include(N0NaR,_oDmX_)end)end;function S1wg_DG.sort(tK,ppm021I)p(tK,ppm021I)return tK end +function S1wg_DG.sortBy(ASUXhD,KCm,u)local fDk=KCm or +S1wg_DG.identity;if(v(KCm)=='string')then +fDk=function(ASUXhD)return ASUXhD[KCm]end end;u=u or qxZa6ozV +p(ASUXhD,function(gxYY,sVMxk)return +u(fDk(gxYY),fDk(sVMxk))end)return ASUXhD end +function S1wg_DG.groupBy(SyD,v4,...)local j7siW={...}local Hl={} +for AP060rq,DIEKD10 in l(SyD)do +local lLJ=v4(DIEKD10,AP060rq,hUL(j7siW))if Hl[lLJ]then Hl[lLJ][#Hl[lLJ]+1]=DIEKD10 else +Hl[lLJ]={DIEKD10}end end;return Hl end +function S1wg_DG.countBy(EicsS,JubU,...)local L={}for JKci,SsBe in l(EicsS)do local o=JubU(SsBe,JKci,...) +L[o]=(L[o]or 0)+1 end;return L end +function S1wg_DG.size(...)local ZOmcmO={...}local _G19JrRB=ZOmcmO[1]return -(l6Sm5(m0r3_J)=='table')and MGSnnzOI(_G19JrRB[1])or MGSnnzOI(_G19JrRB)end -function qxZa6ozV.containsKeys(MLrs,hP5)for oqjhEZb0 in zupvsz(hP5)do -if not MLrs[oqjhEZb0]then return false end end;return true end -function qxZa6ozV.sameKeys(Pha,G) -for MOrzq4 in zupvsz(Pha)do if not G[MOrzq4]then return false end end -for bEMp in zupvsz(G)do if not Pha[bEMp]then return false end end;return true end -function qxZa6ozV.sample(dd,MOQN,O)MOQN=MOQN or 1;if MOQN==0 then return{}end;if MOQN==1 then -if O then S9TO(O)end;return{dd[pS78Y(1,#dd)]}end;return -qxZa6ozV.slice(qxZa6ozV.shuffle(dd,O),1,MOQN)end -function qxZa6ozV.sampleProb(FEpet,P,G)if G then S9TO(G)end;local EcLLM={}for wo,ur in Mw(FEpet)do if pS78Y()<P then -EcLLM[#EcLLM+1]=ur end end;return EcLLM end -function qxZa6ozV.shuffle(XTX,wc8hjKp1)if wc8hjKp1 then S9TO(wc8hjKp1)end;local f={} -for Hjag,Yg in Mw(XTX)do local uc=RlMSrmdD(pS78Y()* -Hjag)+1;f[Hjag]=f[uc]f[uc]=Yg end;return f end;function qxZa6ozV.toArray(...)return{...}end;function qxZa6ozV.find(bw,ad,EG344W) -for MVlUhPEM=EG344W or 1,#bw do if -qxZa6ozV.isEqual(bw[MVlUhPEM],ad)then return MVlUhPEM end end end;function qxZa6ozV.reverse(LT) -local pfiWYrg={} -for smnX9H6=#LT,1,-1 do pfiWYrg[#pfiWYrg+1]=LT[smnX9H6]end;return pfiWYrg end -function qxZa6ozV.fill(FzRhHR,mMBxOoQa,xYSLIT,Eae7ILmk)Eae7ILmk= -Eae7ILmk or qxZa6ozV.size(FzRhHR)for xYSLIT=xYSLIT or 1,Eae7ILmk -do FzRhHR[xYSLIT]=mMBxOoQa end;return FzRhHR end -function qxZa6ozV.zeros(Jy23ZRAA)return qxZa6ozV.fill({},0,1,Jy23ZRAA)end -function qxZa6ozV.ones(V8IWw)return qxZa6ozV.fill({},1,1,V8IWw)end -function qxZa6ozV.vector(uyYdf,K)return qxZa6ozV.fill({},uyYdf,1,K)end -function qxZa6ozV.selectWhile(ZX,tbdC,...)local VaY3={} -for HK7Mbgze,VXPfx in Mw(ZX)do if tbdC(VXPfx,HK7Mbgze,...)then VaY3[HK7Mbgze]=VXPfx else -break end end;return VaY3 end -function qxZa6ozV.dropWhile(j3Qk,X1,...)local GpruB;for r,V7YqV in Mw(j3Qk)do -if not X1(V7YqV,r,...)then GpruB=r;break end end;if(GpruB==nil)then return{}end;return -qxZa6ozV.rest(j3Qk,GpruB)end -function qxZa6ozV.sortedIndex(JbvH7,Cqk9Luq,PeAP9X,vN5AF9)local j=PeAP9X or z5i2i;if(vN5AF9 ==true)then -JdUtcU(JbvH7,j)end;for EOgmP=1,#JbvH7 do -if not j(JbvH7[EOgmP],Cqk9Luq)then return EOgmP end end;return#JbvH7+1 end;function qxZa6ozV.indexOf(j,mJof) -for yz1Kuwby=1,#j do if j[yz1Kuwby]==mJof then return yz1Kuwby end end end -function qxZa6ozV.lastIndexOf(KVE6TG,YY) -local r9=qxZa6ozV.indexOf(qxZa6ozV.reverse(KVE6TG),YY)if r9 then return#KVE6TG-r9+1 end end -function qxZa6ozV.findIndex(mtUG,PFRuf,...)for KhK1gRj9=1,#mtUG do -if PFRuf(mtUG[KhK1gRj9],KhK1gRj9,...)then return KhK1gRj9 end end end -function qxZa6ozV.findLastIndex(Xgj,Ko,...) -local A=qxZa6ozV.findIndex(qxZa6ozV.reverse(Xgj),Ko,...)if A then return#Xgj-A+1 end end;function qxZa6ozV.addTop(IU6Om,...) -for sKIIqz,wmhARqEa in Mw({...})do lIpFkbLI(IU6Om,1,wmhARqEa)end;return IU6Om end;function qxZa6ozV.prepend(_RT3,...)return -qxZa6ozV.append({...},_RT3)end -function qxZa6ozV.push(V,...)local BTA={...}for QVEYENaX,gxqa in -Mw({...})do V[#V+1]=gxqa end;return V end -function qxZa6ozV.shift(q4,QyKi)QyKi=OV7(QyKi or 1,#q4)local _o3FE={}for n=1,QyKi do local WM=q4[1] -_o3FE[#_o3FE+1]=WM;GQLN(q4,1)end;return kyWtqIf0(_o3FE)end -function qxZa6ozV.unshift(zb8b,YBqeh)YBqeh=OV7(YBqeh or 1,#zb8b)local WRkIg={} -for RH_vLUg=1,YBqeh do -local aEH=zb8b[#zb8b]WRkIg[#WRkIg+1]=aEH;GQLN(zb8b)end;return kyWtqIf0(WRkIg)end -function qxZa6ozV.pull(g20N7,...) -for puZN,_Dy in Mw({...})do for MC=#g20N7,1,-1 do if qxZa6ozV.isEqual(g20N7[MC],_Dy)then -GQLN(g20N7,MC)end end end;return g20N7 end -function qxZa6ozV.removeRange(WOBSVeqF,A,vqW6)A=A or 1;vqW6=vqW6 or#WOBSVeqF;if A>vqW6 then -S1wg_DG("start cannot be greater than finish.")end -for R4oRlgh=vqW6,A,-1 do GQLN(WOBSVeqF,R4oRlgh)end;return WOBSVeqF end -function qxZa6ozV.chunk(rBRXA,qfFSJN,...)local Va8fT08T,d778,aZT,ni9je9bJ={},0 -for uwwNE,X40cF in Mw(rBRXA)do -ni9je9bJ=qfFSJN(X40cF,uwwNE,...)aZT=(aZT==nil)and ni9je9bJ or aZT -d778=( -(ni9je9bJ~=aZT)and(d778+1)or d778)if not Va8fT08T[d778]then Va8fT08T[d778]={rBRXA[uwwNE]}else -Va8fT08T[d778][ -#Va8fT08T[d778]+1]=rBRXA[uwwNE]end;aZT=ni9je9bJ end;return Va8fT08T end -function qxZa6ozV.slice(EW,asgq,IQybL1)local hYKT45={}for Rq7=asgq or 1,IQybL1 or#EW do -hYKT45[#hYKT45+1]=EW[Rq7]end;return hYKT45 end -function qxZa6ozV.first(LQ_EIcl,uaL)uaL=uaL or 1;local gujcrFp={}for ph06vXj=1,uaL do -gujcrFp[ph06vXj]=LQ_EIcl[ph06vXj]end;return gujcrFp end -function qxZa6ozV.initial(nH0LB4c,ALwJ9)local _X=#nH0LB4c;ALwJ9= -ALwJ9 and _X- (OV7(ALwJ9,_X))or _X-1;local ruXMob={}for E=1,ALwJ9 do -ruXMob[E]=nH0LB4c[E]end;return ruXMob end -function qxZa6ozV.last(jcgjAE,BZmaGN)local HSav=#jcgjAE;BZmaGN= -BZmaGN and HSav-OV7(BZmaGN-1,HSav-1)or 2;local sDjMr={}for biQX3Ut=BZmaGN,HSav do -sDjMr[#sDjMr+1]=jcgjAE[biQX3Ut]end;return sDjMr end -function qxZa6ozV.rest(BLEXN_,Ljc)local fpN7T={}for FNSk_=Ljc or 1,#BLEXN_ do -fpN7T[#fpN7T+1]=BLEXN_[FNSk_]end;return fpN7T end;function qxZa6ozV.nth(LmE,pZTFVP)return LmE[pZTFVP]end -function qxZa6ozV.compact(XL) -local L5vC0Jx={} -for vpONJ,A in zupvsz(XL)do if A then L5vC0Jx[#L5vC0Jx+1]=A end end;return L5vC0Jx end -function qxZa6ozV.flatten(LN,dA14qP)dA14qP=dA14qP or false;local JcQc;local hDih6_D={} -for QKbZ464i,F1TsZ in Mw(LN)do +(v(_G19JrRB)=='table')and hgW2H5(ZOmcmO[1])or hgW2H5(ZOmcmO)end;function S1wg_DG.containsKeys(m0r3_J,MLrs) +for hP5 in l(MLrs)do if not m0r3_J[hP5]then return false end end;return true end +function S1wg_DG.sameKeys(oqjhEZb0,Pha)for G in +l(oqjhEZb0)do if not Pha[G]then return false end end +for MOrzq4 in l(Pha)do if not +oqjhEZb0[MOrzq4]then return false end end;return true end +function S1wg_DG.sample(bEMp,dd,MOQN)dd=dd or 1;if dd==0 then return{}end +if dd==1 then +if MOQN then GQLN(MOQN)end;return{bEMp[toXyq(1,#bEMp)]}end +return S1wg_DG.slice(S1wg_DG.shuffle(bEMp,MOQN),1,dd)end +function S1wg_DG.sampleProb(O,FEpet,P)if P then GQLN(P)end;local G={}for EcLLM,wo in kyWtqIf0(O)do if toXyq()<FEpet then +G[#G+1]=wo end end;return G end +function S1wg_DG.shuffle(ur,XTX)if XTX then GQLN(XTX)end;local wc8hjKp1={}for f,Hjag in kyWtqIf0(ur)do local Yg= +pS78Y(toXyq()*f)+1;wc8hjKp1[f]=wc8hjKp1[Yg] +wc8hjKp1[Yg]=Hjag end;return wc8hjKp1 end;function S1wg_DG.toArray(...)return{...}end;function S1wg_DG.find(uc,bw,ad) +for EG344W=ad or 1,#uc do if +S1wg_DG.isEqual(uc[EG344W],bw)then return EG344W end end end;function S1wg_DG.reverse(MVlUhPEM) +local LT={} +for pfiWYrg=#MVlUhPEM,1,-1 do LT[#LT+1]=MVlUhPEM[pfiWYrg]end;return LT end +function S1wg_DG.fill(smnX9H6,FzRhHR,mMBxOoQa,xYSLIT)xYSLIT= +xYSLIT or S1wg_DG.size(smnX9H6)for mMBxOoQa=mMBxOoQa or 1,xYSLIT do +smnX9H6[mMBxOoQa]=FzRhHR end;return smnX9H6 end +function S1wg_DG.zeros(Eae7ILmk)return S1wg_DG.fill({},0,1,Eae7ILmk)end +function S1wg_DG.ones(Jy23ZRAA)return S1wg_DG.fill({},1,1,Jy23ZRAA)end +function S1wg_DG.vector(V8IWw,uyYdf)return S1wg_DG.fill({},V8IWw,1,uyYdf)end +function S1wg_DG.selectWhile(K,ZX,...)local tbdC={}for VaY3,HK7Mbgze in kyWtqIf0(K)do +if ZX(HK7Mbgze,VaY3,...)then tbdC[VaY3]=HK7Mbgze else break end end;return tbdC end +function S1wg_DG.dropWhile(VXPfx,j3Qk,...)local X1;for GpruB,r in kyWtqIf0(VXPfx)do +if not j3Qk(r,GpruB,...)then X1=GpruB;break end end;if(X1 ==nil)then return{}end;return +S1wg_DG.rest(VXPfx,X1)end +function S1wg_DG.sortedIndex(V7YqV,JbvH7,Cqk9Luq,PeAP9X)local vN5AF9=Cqk9Luq or qxZa6ozV;if(PeAP9X==true)then +p(V7YqV,vN5AF9)end;for j=1,#V7YqV do +if not vN5AF9(V7YqV[j],JbvH7)then return j end end;return#V7YqV+1 end;function S1wg_DG.indexOf(EOgmP,j) +for mJof=1,#EOgmP do if EOgmP[mJof]==j then return mJof end end end +function S1wg_DG.lastIndexOf(yz1Kuwby,KVE6TG) +local YY=S1wg_DG.indexOf(S1wg_DG.reverse(yz1Kuwby),KVE6TG)if YY then return#yz1Kuwby-YY+1 end end;function S1wg_DG.findIndex(r9,mtUG,...) +for PFRuf=1,#r9 do if mtUG(r9[PFRuf],PFRuf,...)then return PFRuf end end end +function S1wg_DG.findLastIndex(KhK1gRj9,Xgj,...) +local Ko=S1wg_DG.findIndex(S1wg_DG.reverse(KhK1gRj9),Xgj,...)if Ko then return#KhK1gRj9-Ko+1 end end;function S1wg_DG.addTop(A,...) +for IU6Om,sKIIqz in kyWtqIf0({...})do odpE(A,1,sKIIqz)end;return A end;function S1wg_DG.prepend(wmhARqEa,...)return +S1wg_DG.append({...},wmhARqEa)end;function S1wg_DG.push(_RT3,...) +local V={...} +for BTA,QVEYENaX in kyWtqIf0({...})do _RT3[#_RT3+1]=QVEYENaX end;return _RT3 end +function S1wg_DG.shift(gxqa,q4)q4=RlMSrmdD( +q4 or 1,#gxqa)local QyKi={}for _o3FE=1,q4 do local n=gxqa[1] +QyKi[#QyKi+1]=n;lIpFkbLI(gxqa,1)end;return hUL(QyKi)end +function S1wg_DG.unshift(WM,zb8b)zb8b=RlMSrmdD(zb8b or 1,#WM)local YBqeh={} +for WRkIg=1,zb8b do +local RH_vLUg=WM[#WM]YBqeh[#YBqeh+1]=RH_vLUg;lIpFkbLI(WM)end;return hUL(YBqeh)end +function S1wg_DG.pull(aEH,...) +for g20N7,puZN in kyWtqIf0({...})do for _Dy=#aEH,1,-1 do if S1wg_DG.isEqual(aEH[_Dy],puZN)then +lIpFkbLI(aEH,_Dy)end end end;return aEH end +function S1wg_DG.removeRange(MC,WOBSVeqF,A)WOBSVeqF=WOBSVeqF or 1;A=A or#MC;if WOBSVeqF>A then +zupvsz("start cannot be greater than finish.")end +for vqW6=A,WOBSVeqF,-1 do lIpFkbLI(MC,vqW6)end;return MC end +function S1wg_DG.chunk(R4oRlgh,rBRXA,...)local qfFSJN,Va8fT08T,d778,aZT={},0 +for ni9je9bJ,uwwNE in kyWtqIf0(R4oRlgh)do +aZT=rBRXA(uwwNE,ni9je9bJ,...)d778=(d778 ==nil)and aZT or d778 +Va8fT08T=( +(aZT~=d778)and(Va8fT08T+1)or Va8fT08T)if not qfFSJN[Va8fT08T]then +qfFSJN[Va8fT08T]={R4oRlgh[ni9je9bJ]}else +qfFSJN[Va8fT08T][#qfFSJN[Va8fT08T]+1]=R4oRlgh[ni9je9bJ]end;d778=aZT end;return qfFSJN end +function S1wg_DG.slice(X40cF,EW,asgq)local IQybL1={}for hYKT45=EW or 1,asgq or#X40cF do +IQybL1[#IQybL1+1]=X40cF[hYKT45]end;return IQybL1 end +function S1wg_DG.first(Rq7,LQ_EIcl)LQ_EIcl=LQ_EIcl or 1;local uaL={}for gujcrFp=1,LQ_EIcl do +uaL[gujcrFp]=Rq7[gujcrFp]end;return uaL end +function S1wg_DG.initial(ph06vXj,nH0LB4c)local ALwJ9=#ph06vXj +nH0LB4c=nH0LB4c and +ALwJ9- (RlMSrmdD(nH0LB4c,ALwJ9))or ALwJ9-1;local _X={}for ruXMob=1,nH0LB4c do _X[ruXMob]=ph06vXj[ruXMob]end +return _X end +function S1wg_DG.last(E,jcgjAE)local BZmaGN=#E +jcgjAE=jcgjAE and +BZmaGN-RlMSrmdD(jcgjAE-1,BZmaGN-1)or 2;local HSav={}for sDjMr=jcgjAE,BZmaGN do HSav[#HSav+1]=E[sDjMr]end;return +HSav end;function S1wg_DG.rest(biQX3Ut,BLEXN_)local Ljc={} +for fpN7T=BLEXN_ or 1,#biQX3Ut do Ljc[#Ljc+1]=biQX3Ut[fpN7T]end;return Ljc end;function S1wg_DG.nth(FNSk_,LmE)return +FNSk_[LmE]end +function S1wg_DG.compact(pZTFVP)local XL={}for L5vC0Jx,vpONJ in l(pZTFVP)do if vpONJ then +XL[#XL+1]=vpONJ end end;return XL end +function S1wg_DG.flatten(A,LN)LN=LN or false;local dA14qP;local JcQc={} +for hDih6_D,QKbZ464i in kyWtqIf0(A)do +if v(QKbZ464i)=='table'then +dA14qP= +LN and QKbZ464i or S1wg_DG.flatten(QKbZ464i)for F1TsZ,uF2 in kyWtqIf0(dA14qP)do JcQc[#JcQc+1]=uF2 end else JcQc[ +#JcQc+1]=QKbZ464i end end;return JcQc end +function S1wg_DG.difference(T,pC_)if not pC_ then return S1wg_DG.clone(T)end;return +S1wg_DG.select(T,function(ju)return +not S1wg_DG.include(pC_,ju)end)end;function S1wg_DG.union(...) +return S1wg_DG.unique(S1wg_DG.flatten({...}))end +function S1wg_DG.intersection(deu1,...)local IgZ6={...}local kVRiv3F={}for kWMf,DawC in +kyWtqIf0(deu1)do if -l6Sm5(F1TsZ)=='table'then -JcQc=dA14qP and F1TsZ or qxZa6ozV.flatten(F1TsZ)for uF2,T in Mw(JcQc)do hDih6_D[#hDih6_D+1]=T end else hDih6_D[# -hDih6_D+1]=F1TsZ end end;return hDih6_D end -function qxZa6ozV.difference(pC_,ju)if not ju then return qxZa6ozV.clone(pC_)end;return -qxZa6ozV.select(pC_,function(deu1)return -not qxZa6ozV.include(ju,deu1)end)end;function qxZa6ozV.union(...) -return qxZa6ozV.unique(qxZa6ozV.flatten({...}))end -function qxZa6ozV.intersection(IgZ6,...)local kVRiv3F={...}local kWMf={} -for DawC,cP in -Mw(IgZ6)do if -qxZa6ozV.all(kVRiv3F,function(w)return qxZa6ozV.include(w,cP)end)then kWMf[#kWMf+1]=cP end end;return kWMf end -function qxZa6ozV.symmetricDifference(UZ,tdH)return -qxZa6ozV.difference(qxZa6ozV.union(UZ,tdH),qxZa6ozV.intersection(UZ,tdH))end -function qxZa6ozV.unique(ymt)local WxGA={} -for jBuHkH=1,#ymt do if -not qxZa6ozV.find(WxGA,ymt[jBuHkH])then WxGA[#WxGA+1]=ymt[jBuHkH]end end;return WxGA end;function qxZa6ozV.isunique(E3) -return#E3 ==# (qxZa6ozV.unique(E3))end -function qxZa6ozV.zip(...)local CZi_zK={...}local _6KCMph=qxZa6ozV.max(CZi_zK,function(V) -return#V end)local PY3VqYZ8={} -for y=1,_6KCMph -do if not PY3VqYZ8[y]then PY3VqYZ8[y]={}end;for QF,hN in Mw(CZi_zK)do -if hN[y]then PY3VqYZ8[y][ -#PY3VqYZ8[y]+1]=hN[y]end end end;return PY3VqYZ8 end -function qxZa6ozV.zipWith(hVflx4kh,...)local GP={...} -local oCZYv2dT=qxZa6ozV.max(GP,function(PoH)return#PoH end)local RLaqM3={}for xM709D=1,oCZYv2dT do -RLaqM3[xM709D]=hVflx4kh(kyWtqIf0(qxZa6ozV.pluck(GP,xM709D)))end;return RLaqM3 end -function qxZa6ozV.append(z50,sAPD)local AVFi={}for GGKI,gWaGu in Mw(z50)do AVFi[GGKI]=gWaGu end;for SFKM,j6jQmlbr in -Mw(sAPD)do AVFi[#AVFi+1]=j6jQmlbr end;return AVFi end -function qxZa6ozV.interleave(...)local m403CY={...} -local dL=qxZa6ozV.max(m403CY,qxZa6ozV.size)local PrTsHeT={}for eNI3MT7=1,dL do -for Rfoo,eUJhGD in Mw(m403CY)do if eUJhGD[eNI3MT7]then -PrTsHeT[#PrTsHeT+1]=eUJhGD[eNI3MT7]end end end;return PrTsHeT end;function qxZa6ozV.interpose(wot8,j9vJ) -for J6Qr27Mh=#wot8,2,-1 do lIpFkbLI(wot8,J6Qr27Mh,j9vJ)end;return wot8 end -function qxZa6ozV.range(AwxW8Do,_u,B) -if( -AwxW8Do==nil)and(_u==nil)and(B==nil)then return{}elseif( -AwxW8Do~=nil)and(_u==nil)and(B==nil)then -AwxW8Do,_u,B=cmWo_v(AwxW8Do),AwxW8Do,cmWo_v(AwxW8Do)elseif(AwxW8Do~=nil)and(_u~=nil)and(B==nil)then B=cmWo_v(_u- -AwxW8Do)end;local cdxFVpZw={AwxW8Do} -local Y=VCD(RlMSrmdD((_u-AwxW8Do)/B),0) -for o9Uh=1,Y do cdxFVpZw[#cdxFVpZw+1]=AwxW8Do+B*o9Uh end;return cdxFVpZw end -function qxZa6ozV.rep(BuX1r,Wyf83f2)local P0olj={}for z=1,Wyf83f2 do P0olj[z]=BuX1r end;return P0olj end -function qxZa6ozV.powerset(EHCCkt)local x=#EHCCkt;if x==0 then return{{}}end;local xNWVmS={} -for kGWnkgDu=1,x do for Pkis6H28=1,x-kGWnkgDu+1 -do -xNWVmS[#xNWVmS+1]=qxZa6ozV.slice(EHCCkt,Pkis6H28,Pkis6H28+kGWnkgDu-1)end end;return xNWVmS end -function qxZa6ozV.partition(tSE,abKH,LDp)if abKH<=0 then return end;return PizLA9mj(function() -VQT(tSE,abKH or 1,hUL,LDp)end)end;function qxZa6ozV.overlapping(GWouUlzZ,MqJhIr,Q9)if MqJhIr<=1 then return end -return PizLA9mj(function() -Id(GWouUlzZ,MqJhIr or 2,hUL,Q9)end)end -function qxZa6ozV.aperture(c,qnZ81I)if -qnZ81I<=1 then return end;return -PizLA9mj(function()Ub(c,qnZ81I or 2,hUL)end)end -function qxZa6ozV.pairwise(N9uN)return qxZa6ozV.aperture(N9uN,2)end;function qxZa6ozV.permutation(QGC)return -PizLA9mj(function()qJExeUn2(QGC,#QGC,hUL)end)end -function qxZa6ozV.invert(K8iFU) -local gbU={}for h,hS7 in Mw(K8iFU)do gbU[hS7]=h end;return gbU end -function qxZa6ozV.concat(KQjMKhN,R6PYgHHE,ZwCXrLO,lI)return -toXyq(qxZa6ozV.map(KQjMKhN,tostring),R6PYgHHE,ZwCXrLO,lI)end -function qxZa6ozV.xprod(iMSMP5Lp,WoARZdZ3)local n={}for Uj,HpN_N in Mw(iMSMP5Lp)do -for yP3QEJ,pwi in Mw(WoARZdZ3)do n[#n+1]={HpN_N,pwi}end end;return n end -function qxZa6ozV.sum(QP)local Iy=0;for O9P0mj,eFGwPxi in Mw(QP)do Iy=Iy+eFGwPxi end;return Iy end;function qxZa6ozV.product(m4x8ZsD4)local _witc0Pe=1 -for Y8E,h in Mw(m4x8ZsD4)do _witc0Pe=_witc0Pe*h end;return _witc0Pe end -function qxZa6ozV.mean(EnMMG)return -qxZa6ozV.sum(EnMMG)/ (#EnMMG)end -function qxZa6ozV.median(HzO7UpZ) -local B=qxZa6ozV.sort(qxZa6ozV.clone(HzO7UpZ))local RNTu=#B;if RNTu==0 then return elseif RNTu==1 then return B[1]end -local Q_=X83a(RNTu/2)return -RNTu%2 ==0 and(B[Q_]+B[Q_+1])/2 or B[Q_]end;function qxZa6ozV.noop()return end;function qxZa6ozV.identity(S8GB)return S8GB end;function qxZa6ozV.constant(W7yjGm)return function()return -W7yjGm end end -function qxZa6ozV.applySpec(X)return +S1wg_DG.all(IgZ6,function(cP)return S1wg_DG.include(cP,DawC)end)then kVRiv3F[#kVRiv3F+1]=DawC end end +return kVRiv3F end +function S1wg_DG.symmetricDifference(w,UZ)return +S1wg_DG.difference(S1wg_DG.union(w,UZ),S1wg_DG.intersection(w,UZ))end +function S1wg_DG.unique(tdH)local ymt={}for WxGA=1,#tdH do if not S1wg_DG.find(ymt,tdH[WxGA])then +ymt[#ymt+1]=tdH[WxGA]end end;return +ymt end;function S1wg_DG.isunique(jBuHkH)return +#jBuHkH==# (S1wg_DG.unique(jBuHkH))end +function S1wg_DG.zip(...) +local E3={...} +local CZi_zK=S1wg_DG.max(E3,function(PY3VqYZ8)return#PY3VqYZ8 end)local _6KCMph={} +for V=1,CZi_zK do if not _6KCMph[V]then _6KCMph[V]={}end;for y,QF in kyWtqIf0(E3)do +if +QF[V]then _6KCMph[V][#_6KCMph[V]+1]=QF[V]end end end;return _6KCMph end +function S1wg_DG.zipWith(hN,...)local hVflx4kh={...} +local GP=S1wg_DG.max(hVflx4kh,function(RLaqM3)return#RLaqM3 end)local oCZYv2dT={}for PoH=1,GP do +oCZYv2dT[PoH]=hN(hUL(S1wg_DG.pluck(hVflx4kh,PoH)))end;return oCZYv2dT end +function S1wg_DG.append(xM709D,z50)local sAPD={} +for AVFi,GGKI in kyWtqIf0(xM709D)do sAPD[AVFi]=GGKI end;for gWaGu,SFKM in kyWtqIf0(z50)do sAPD[#sAPD+1]=SFKM end +return sAPD end +function S1wg_DG.interleave(...)local j6jQmlbr={...} +local m403CY=S1wg_DG.max(j6jQmlbr,S1wg_DG.size)local dL={} +for PrTsHeT=1,m403CY do for eNI3MT7,Rfoo in kyWtqIf0(j6jQmlbr)do +if Rfoo[PrTsHeT]then dL[#dL+1]=Rfoo[PrTsHeT]end end end;return dL end;function S1wg_DG.interpose(eUJhGD,wot8) +for j9vJ=#eUJhGD,2,-1 do odpE(eUJhGD,j9vJ,wot8)end;return eUJhGD end +function S1wg_DG.range(J6Qr27Mh,AwxW8Do,_u) +if +( +J6Qr27Mh==nil)and(AwxW8Do==nil)and(_u==nil)then return{}elseif +(J6Qr27Mh~=nil)and(AwxW8Do==nil)and(_u==nil)then J6Qr27Mh,AwxW8Do,_u=Ub(J6Qr27Mh),J6Qr27Mh,Ub(J6Qr27Mh)elseif +(J6Qr27Mh~=nil)and(AwxW8Do~=nil)and(_u==nil)then _u=Ub(AwxW8Do- +J6Qr27Mh)end;local B={J6Qr27Mh} +local cdxFVpZw=BCf7(pS78Y((AwxW8Do-J6Qr27Mh)/_u),0)for Y=1,cdxFVpZw do B[#B+1]=J6Qr27Mh+_u*Y end;return B end;function S1wg_DG.rep(o9Uh,BuX1r)local Wyf83f2={}for P0olj=1,BuX1r do Wyf83f2[P0olj]=o9Uh end +return Wyf83f2 end +function S1wg_DG.powerset(z) +local EHCCkt=#z;if EHCCkt==0 then return{{}}end;local x={}for xNWVmS=1,EHCCkt do +for kGWnkgDu=1,EHCCkt-xNWVmS+1 do x[#x+1]=S1wg_DG.slice(z,kGWnkgDu, +kGWnkgDu+xNWVmS-1)end end;return x end;function S1wg_DG.partition(Pkis6H28,tSE,abKH)if tSE<=0 then return end +return OV7(function() +MGSnnzOI(Pkis6H28,tSE or 1,X83a,abKH)end)end;function S1wg_DG.overlapping(LDp,GWouUlzZ,MqJhIr)if +GWouUlzZ<=1 then return end +return OV7(function() +B0o5xpg7(LDp,GWouUlzZ or 2,X83a,MqJhIr)end)end;function S1wg_DG.aperture(Q9,c)if +c<=1 then return end;return +OV7(function()VQT(Q9,c or 2,X83a)end)end;function S1wg_DG.pairwise(qnZ81I)return +S1wg_DG.aperture(qnZ81I,2)end +function S1wg_DG.permutation(N9uN)return OV7(function() +Id(N9uN,#N9uN,X83a)end)end;function S1wg_DG.invert(QGC)local K8iFU={}for gbU,h in kyWtqIf0(QGC)do K8iFU[h]=gbU end +return K8iFU end +function S1wg_DG.concat(hS7,KQjMKhN,R6PYgHHE,ZwCXrLO)return +JdUtcU(S1wg_DG.map(hS7,tostring),KQjMKhN,R6PYgHHE,ZwCXrLO)end +function S1wg_DG.xprod(lI,iMSMP5Lp)local WoARZdZ3={} +for n,Uj in kyWtqIf0(lI)do for HpN_N,yP3QEJ in kyWtqIf0(iMSMP5Lp)do +WoARZdZ3[#WoARZdZ3+1]={Uj,yP3QEJ}end end;return WoARZdZ3 end +function S1wg_DG.sum(pwi)local QP=0;for Iy,O9P0mj in kyWtqIf0(pwi)do QP=QP+O9P0mj end;return QP end +function S1wg_DG.product(eFGwPxi)local m4x8ZsD4=1 +for _witc0Pe,Y8E in kyWtqIf0(eFGwPxi)do m4x8ZsD4=m4x8ZsD4*Y8E end;return m4x8ZsD4 end +function S1wg_DG.mean(h)return S1wg_DG.sum(h)/ (#h)end +function S1wg_DG.median(EnMMG) +local HzO7UpZ=S1wg_DG.sort(S1wg_DG.clone(EnMMG))local B=#HzO7UpZ;if B==0 then return elseif B==1 then return HzO7UpZ[1]end +local RNTu=VCD(B/2) +return B%2 ==0 and +(HzO7UpZ[RNTu]+HzO7UpZ[RNTu+1])/2 or HzO7UpZ[RNTu]end;function S1wg_DG.noop()return end;function S1wg_DG.identity(Q_)return Q_ end;function S1wg_DG.constant(S8GB)return function()return +S8GB end end +function S1wg_DG.applySpec(W7yjGm)return function(...) -local Y={}for qqvEf3,Wriu in zupvsz(X)do Y[qqvEf3]=Wriu(...)end;return Y end end -function qxZa6ozV.memoize(I0Pxr5F)local ukGf_=odpE({},{__mode='kv'}) -return function(uZpt01P)if -(ukGf_[uZpt01P]==nil)then ukGf_[uZpt01P]=I0Pxr5F(uZpt01P)end;return -ukGf_[uZpt01P]end end -function qxZa6ozV.unfold(hJk0n8bR,o9DTTJig)local v4,Uaq2_Xzk={} -while true do Uaq2_Xzk,o9DTTJig=hJk0n8bR(o9DTTJig)if -Uaq2_Xzk~=nil then v4[#v4+1]=Uaq2_Xzk else break end end;return v4 end -function qxZa6ozV.once(S0DM)local GHasi5=0;local QeX_U9tm={}return -function(...)GHasi5=GHasi5+1 -if GHasi5 <=1 then QeX_U9tm={...}end;return S0DM(kyWtqIf0(QeX_U9tm))end end -function qxZa6ozV.before(Dp9m,MGSnnzOI)local sJjNM=0;local GnSs={}return -function(...)sJjNM=sJjNM+1 -if sJjNM<=MGSnnzOI then GnSs={...}end;return Dp9m(kyWtqIf0(GnSs))end end -function qxZa6ozV.after(XP,MGSnnzOI)local Sj,yKj1=MGSnnzOI,0;return function(...)yKj1=yKj1+1 -if yKj1 >=Sj then return XP(...)end end end -function qxZa6ozV.compose(...)local F9WZ=qxZa6ozV.reverse{...} -return function(...)local A5,nY_O=true -for QAJAyj5,EZ in Mw(F9WZ)do if A5 then -A5=false;nY_O=EZ(...)else nY_O=EZ(nY_O)end end;return nY_O end end -function qxZa6ozV.pipe(n,...)return qxZa6ozV.compose(...)(n)end -function qxZa6ozV.complement(M)return function(...)return not M(...)end end -function qxZa6ozV.juxtapose(AADiL1,...)local Arw={} -for b,_ZM1Yj3 in Mw({...})do Arw[b]=_ZM1Yj3(AADiL1)end;return kyWtqIf0(Arw)end;function qxZa6ozV.wrap(rmSU,L2RHrI) -return function(...)return L2RHrI(rmSU,...)end end -function qxZa6ozV.times(XW7Y5Rz,C,...)local NhwEkTd={}for XGz=1,(C or 1)do -NhwEkTd[XGz]=XW7Y5Rz(XGz,...)end;return NhwEkTd end;function qxZa6ozV.bind(Tf4P2eIf,TF3Htu) -return function(...)return Tf4P2eIf(TF3Htu,...)end end -function qxZa6ozV.bind2(K5yUw1t,Mi)return function(WWyrqnSL,...)return -K5yUw1t(WWyrqnSL,Mi,...)end end;function qxZa6ozV.bindn(gVTyP,...)local Ck={...} -return function(...)return -gVTyP(kyWtqIf0(qxZa6ozV.append(Ck,{...})))end end -function qxZa6ozV.bindall(CRG,...) -local dkz={...} -for zrCq,azXMvVdM in Mw(dkz)do local CBgxHfbq=CRG[azXMvVdM]if CBgxHfbq then -CRG[azXMvVdM]=qxZa6ozV.bind(CBgxHfbq,CRG)end end;return CRG end -function qxZa6ozV.cond(WO)return -function(...)for H,C28NuJ3 in Mw(WO)do -if C28NuJ3[1](...)then return C28NuJ3[2](...)end end end end -function qxZa6ozV.uniqueId(sz,...)RoXZEsn=RoXZEsn+1;if sz then -if l6Sm5(sz)=='string'then -return sz:format(RoXZEsn)elseif l6Sm5(sz)=='function'then return sz(RoXZEsn,...)end end;return RoXZEsn end -function qxZa6ozV.iterator(qH,u,uJ1Vn4uYP)local MGSnnzOI=0;return -function()MGSnnzOI=MGSnnzOI+1;if -uJ1Vn4uYP and MGSnnzOI>uJ1Vn4uYP then return end;u=qH(u)return u end end -function qxZa6ozV.array(...)local Z={}for pJ in...do Z[#Z+1]=pJ end;return Z end;function qxZa6ozV.castArray(NAjg)return -(l6Sm5(NAjg)~='table')and{NAjg}or NAjg end;function qxZa6ozV.flip(con) +local X={}for Y,qqvEf3 in l(W7yjGm)do X[Y]=qqvEf3(...)end;return X end end +function S1wg_DG.memoize(Wriu)local I0Pxr5F=oUA({},{__mode='kv'}) +return function(ukGf_)if +(I0Pxr5F[ukGf_]==nil)then I0Pxr5F[ukGf_]=Wriu(ukGf_)end;return +I0Pxr5F[ukGf_]end end +function S1wg_DG.unfold(uZpt01P,hJk0n8bR)local o9DTTJig,v4={} +while true do v4,hJk0n8bR=uZpt01P(hJk0n8bR)if v4 ~=nil then o9DTTJig[ +#o9DTTJig+1]=v4 else break end end;return o9DTTJig end +function S1wg_DG.once(Uaq2_Xzk)local S0DM=0;local GHasi5={} +return function(...)S0DM=S0DM+1;if S0DM<=1 then GHasi5={...}end;return +Uaq2_Xzk(hUL(GHasi5))end end +function S1wg_DG.before(QeX_U9tm,hgW2H5)local Dp9m=0;local sJjNM={}return +function(...)Dp9m=Dp9m+1 +if Dp9m<=hgW2H5 then sJjNM={...}end;return QeX_U9tm(hUL(sJjNM))end end +function S1wg_DG.after(GnSs,hgW2H5)local XP,Sj=hgW2H5,0;return +function(...)Sj=Sj+1;if Sj>=XP then return GnSs(...)end end end +function S1wg_DG.compose(...)local yKj1=S1wg_DG.reverse{...} +return +function(...)local F9WZ,A5=true;for nY_O,QAJAyj5 in +kyWtqIf0(yKj1)do +if F9WZ then F9WZ=false;A5=QAJAyj5(...)else A5=QAJAyj5(A5)end end;return A5 end end +function S1wg_DG.pipe(EZ,...)return S1wg_DG.compose(...)(EZ)end +function S1wg_DG.complement(n)return function(...)return not n(...)end end +function S1wg_DG.juxtapose(M,...)local AADiL1={} +for Arw,b in kyWtqIf0({...})do AADiL1[Arw]=b(M)end;return hUL(AADiL1)end;function S1wg_DG.wrap(_ZM1Yj3,rmSU) +return function(...)return rmSU(_ZM1Yj3,...)end end;function S1wg_DG.times(L2RHrI,XW7Y5Rz,...)local C={}for NhwEkTd=1,(XW7Y5Rz or 1) +do C[NhwEkTd]=L2RHrI(NhwEkTd,...)end +return C end +function S1wg_DG.bind(XGz,Tf4P2eIf)return function(...)return +XGz(Tf4P2eIf,...)end end;function S1wg_DG.bind2(TF3Htu,K5yUw1t) +return function(Mi,...)return TF3Htu(Mi,K5yUw1t,...)end end;function S1wg_DG.bindn(WWyrqnSL,...)local gVTyP={...} return function(...)return -con(kyWtqIf0(qxZa6ozV.reverse({...})))end end;function qxZa6ozV.nthArg(I) +WWyrqnSL(hUL(S1wg_DG.append(gVTyP,{...})))end end +function S1wg_DG.bindall(Ck,...) +local CRG={...} +for dkz,zrCq in kyWtqIf0(CRG)do local azXMvVdM=Ck[zrCq]if azXMvVdM then +Ck[zrCq]=S1wg_DG.bind(azXMvVdM,Ck)end end;return Ck end;function S1wg_DG.cond(CBgxHfbq) return function(...) -local TxmZR6UE={...}return -TxmZR6UE[(I<0)and(#TxmZR6UE+I+1)or I]end end;function qxZa6ozV.unary(I1b4o) +for WO,H in kyWtqIf0(CBgxHfbq)do if H[1](...)then return H[2](...)end end end end +function S1wg_DG.uniqueId(C28NuJ3,...)qJExeUn2= +qJExeUn2+1;if C28NuJ3 then +if v(C28NuJ3)=='string'then +return C28NuJ3:format(qJExeUn2)elseif v(C28NuJ3)=='function'then return C28NuJ3(qJExeUn2,...)end end;return +qJExeUn2 end +function S1wg_DG.iterator(sz,qH,u)local uJ1Vn4uYP=0 +return function()uJ1Vn4uYP=uJ1Vn4uYP+1 +if u and uJ1Vn4uYP>u then return end;qH=sz(qH)return qH end end +function S1wg_DG.array(...)local Z={}for pJ in...do Z[#Z+1]=pJ end;return Z end;function S1wg_DG.castArray(NAjg)return +(v(NAjg)~='table')and{NAjg}or NAjg end;function S1wg_DG.flip(con) +return function(...)return +con(hUL(S1wg_DG.reverse({...})))end end;function S1wg_DG.nthArg(I) +return function(...)local TxmZR6UE={...}return +TxmZR6UE[( +I<0)and(#TxmZR6UE+I+1)or I]end end;function S1wg_DG.unary(I1b4o) return function(...) local nAt={...}return I1b4o(nAt[1])end end -function qxZa6ozV.ary(pNJ,RQ)RQ=RQ or 1 +function S1wg_DG.ary(pNJ,RQ)RQ=RQ or 1 return function(...) -local wnZcHKf={...}local Lv_8={}for UQ=1,RQ do Lv_8[UQ]=wnZcHKf[UQ]end;return -pNJ(kyWtqIf0(Lv_8))end end -function qxZa6ozV.rearg(FG,vLzqjJw)return +local wnZcHKf={...}local Lv_8={}for UQ=1,RQ do Lv_8[UQ]=wnZcHKf[UQ]end +return pNJ(hUL(Lv_8))end end +function S1wg_DG.rearg(FG,vLzqjJw)return function(...)local v2dsC21={...}local O={} -for wx,u in Mw(vLzqjJw)do O[wx]=v2dsC21[u]end;return FG(kyWtqIf0(O))end end -function qxZa6ozV.over(...)local V_84V={...} -return function(...)local qF={} -for IZbOX7TW,Dd6ZLpU in Mw(V_84V)do qF[#qF+1]=Dd6ZLpU(...)end;return qF end end -function qxZa6ozV.overEvery(...)local MP=qxZa6ozV.over(...) +for wx,u in kyWtqIf0(vLzqjJw)do O[wx]=v2dsC21[u]end;return FG(hUL(O))end end +function S1wg_DG.over(...)local V_84V={...}return +function(...)local qF={}for IZbOX7TW,Dd6ZLpU in kyWtqIf0(V_84V)do +qF[#qF+1]=Dd6ZLpU(...)end;return qF end end +function S1wg_DG.overEvery(...)local MP=S1wg_DG.over(...) return function(...) -return qxZa6ozV.reduce(MP(...),function(w4c,C58) +return S1wg_DG.reduce(MP(...),function(w4c,C58) return w4c and C58 end)end end -function qxZa6ozV.overSome(...)local Jk6Nh=qxZa6ozV.over(...) +function S1wg_DG.overSome(...)local Jk6Nh=S1wg_DG.over(...) return function(...) -return qxZa6ozV.reduce(Jk6Nh(...),function(s1Ws,desLYv)return +return S1wg_DG.reduce(Jk6Nh(...),function(s1Ws,desLYv)return s1Ws or desLYv end)end end -function qxZa6ozV.overArgs(COq2NY9I,...)local aoBEg65S={...} +function S1wg_DG.overArgs(COq2NY9I,...)local aoBEg65S={...} return -function(...)local x6={...}for t3cNa2l=1,#aoBEg65S do -local COq2NY9I=aoBEg65S[t3cNa2l] -if x6[t3cNa2l]then x6[t3cNa2l]=COq2NY9I(x6[t3cNa2l])end end;return -COq2NY9I(kyWtqIf0(x6))end end -function qxZa6ozV.converge(Ik,SeHOs,P2rGsUx)return -function(...)return Ik(SeHOs(...),P2rGsUx(...))end end -function qxZa6ozV.partial(c,...)local v12AhMm={...} +function(...)local x6={...} +for t3cNa2l=1,#aoBEg65S do local Ik=aoBEg65S[t3cNa2l]if +x6[t3cNa2l]then x6[t3cNa2l]=Ik(x6[t3cNa2l])end end;return COq2NY9I(hUL(x6))end end +function S1wg_DG.converge(SeHOs,P2rGsUx,c)return +function(...)return SeHOs(P2rGsUx(...),c(...))end end +function S1wg_DG.partial(v12AhMm,...)local F2uxGC={...} return -function(...)local F2uxGC={...}local Xs0={}for QK8ibF,TEio7k0z in Mw(v12AhMm)do -Xs0[QK8ibF]= -(TEio7k0z=='_')and qxZa6ozV.shift(F2uxGC)or TEio7k0z end;return -c(kyWtqIf0(qxZa6ozV.append(Xs0,F2uxGC)))end end -function qxZa6ozV.partialRight(u,...)local N={...} +function(...)local Xs0={...}local QK8ibF={}for TEio7k0z,u in kyWtqIf0(F2uxGC)do +QK8ibF[TEio7k0z]=(u== +'_')and S1wg_DG.shift(Xs0)or u end;return +v12AhMm(hUL(S1wg_DG.append(QK8ibF,Xs0)))end end +function S1wg_DG.partialRight(N,...)local O2YgxDc={...} return -function(...)local O2YgxDc={...}local VLsC67={}for OHw4=1,#N do -VLsC67[OHw4]= -(N[OHw4]=='_')and qxZa6ozV.shift(O2YgxDc)or N[OHw4]end;return -u(kyWtqIf0(qxZa6ozV.append(O2YgxDc,VLsC67)))end end -function qxZa6ozV.curry(FKZ,Fl)Fl=Fl or 2;local QhS8FvKI={} -local function FaZIJL(sOT2O5)if Fl==1 then return FKZ(sOT2O5)end -if sOT2O5 ~= -nil then QhS8FvKI[#QhS8FvKI+1]=sOT2O5 end -if#QhS8FvKI<Fl then return FaZIJL else -local x={FKZ(kyWtqIf0(QhS8FvKI))}QhS8FvKI={}return kyWtqIf0(x)end end;return FaZIJL end;function qxZa6ozV.time(Wswd_OC,...)local E=sf0()local A0Un={Wswd_OC(...)} -return sf0()-E,kyWtqIf0(A0Un)end -function qxZa6ozV.keys(nRHrI)local k={}for Zp in -zupvsz(nRHrI)do k[#k+1]=Zp end;return k end;function qxZa6ozV.values(A)local _L_={}for WHpm,g in zupvsz(A)do _L_[#_L_+1]=g end -return _L_ end -function qxZa6ozV.path(HiR3yiw,...) -local KeKbiDqN,WfrZqHH8=HiR3yiw,{...}for YX9s9O,y64dF in Mw(WfrZqHH8)do if(KeKbiDqN[y64dF]==nil)then return end -KeKbiDqN=KeKbiDqN[y64dF]end;return KeKbiDqN end;function qxZa6ozV.kvpairs(sNSsH)local K={} -for o8T,xeP in zupvsz(sNSsH)do K[#K+1]={o8T,xeP}end;return K end -function qxZa6ozV.toObj(Tv_3VlmX) -local BT={}for _y3z,rdl in Mw(Tv_3VlmX)do BT[rdl[1]]=rdl[2]end;return BT end;function qxZa6ozV.property(NAP_5jYs) -return function(BZnlpW)return BZnlpW[NAP_5jYs]end end -function qxZa6ozV.propertyOf(isN)return function(yRADzw1v) -return isN[yRADzw1v]end end;function qxZa6ozV.toBoolean(Jafp)return not not Jafp end -function qxZa6ozV.extend(XWh8Ee,...) -local kpezL1e={...}for h,R7yfz_l9 in Mw(kpezL1e)do -if l6Sm5(R7yfz_l9)=='table'then for D35PFLu,wK in zupvsz(R7yfz_l9)do -XWh8Ee[D35PFLu]=wK end end end;return XWh8Ee end -function qxZa6ozV.functions(qeEwE,cbtvFnSa)qeEwE=qeEwE or qxZa6ozV;local fYKH_={} -for W,o in zupvsz(qeEwE)do if -l6Sm5(o)=='function'then fYKH_[#fYKH_+1]=W end end -if cbtvFnSa then local Mm99M=p(qeEwE) -if Mm99M and Mm99M.__index then -local l6YH=qxZa6ozV.functions(Mm99M.__index,cbtvFnSa)for gf2,F744Ew in Mw(l6YH)do fYKH_[#fYKH_+1]=F744Ew end end end;return fYKH_ end -function qxZa6ozV.clone(zgxKF4,UlvVvSBR)if l6Sm5(zgxKF4)~='table'then return zgxKF4 end -local i2i={} -for uRGAL,UUlqXyb6 in zupvsz(zgxKF4)do -if l6Sm5(UUlqXyb6)=='table'then if not UlvVvSBR then -i2i[uRGAL]=qxZa6ozV.clone(UUlqXyb6,UlvVvSBR)else i2i[uRGAL]=UUlqXyb6 end else -i2i[uRGAL]=UUlqXyb6 end end;return i2i end -function qxZa6ozV.tap(fOR92g8,jU26,...)jU26(fOR92g8,...)return fOR92g8 end -function qxZa6ozV.has(WIPTsAPz,DgUx8)return WIPTsAPz[DgUx8]~=nil end -function qxZa6ozV.pick(imac,...)local xX=qxZa6ozV.flatten{...}local Mfb6Kb={}for RRjV,TDOaFo in zupvsz(xX)do +function(...)local VLsC67={...}local OHw4={} +for FKZ=1,#O2YgxDc do OHw4[FKZ]=(O2YgxDc[FKZ]== +'_')and S1wg_DG.shift(VLsC67)or +O2YgxDc[FKZ]end +return N(hUL(S1wg_DG.append(VLsC67,OHw4)))end end +function S1wg_DG.curry(Fl,QhS8FvKI)QhS8FvKI=QhS8FvKI or 2;local FaZIJL={} +local function sOT2O5(x) +if QhS8FvKI==1 then return Fl(x)end;if x~=nil then FaZIJL[#FaZIJL+1]=x end;if +#FaZIJL<QhS8FvKI then return sOT2O5 else local Wswd_OC={Fl(hUL(FaZIJL))}FaZIJL={} +return hUL(Wswd_OC)end end;return sOT2O5 end +function S1wg_DG.time(E,...)local A0Un=Mw()local nRHrI={E(...)}return Mw()-A0Un,hUL(nRHrI)end +function S1wg_DG.keys(k)local Zp={}for A in l(k)do Zp[#Zp+1]=A end;return Zp end;function S1wg_DG.values(_L_)local WHpm={} +for g,HiR3yiw in l(_L_)do WHpm[#WHpm+1]=HiR3yiw end;return WHpm end +function S1wg_DG.path(KeKbiDqN,...) +local WfrZqHH8,YX9s9O=KeKbiDqN,{...}for y64dF,sNSsH in kyWtqIf0(YX9s9O)do if(WfrZqHH8[sNSsH]==nil)then return end +WfrZqHH8=WfrZqHH8[sNSsH]end;return WfrZqHH8 end;function S1wg_DG.kvpairs(K)local o8T={} +for xeP,Tv_3VlmX in l(K)do o8T[#o8T+1]={xeP,Tv_3VlmX}end;return o8T end;function S1wg_DG.toObj(BT) +local _y3z={} +for rdl,NAP_5jYs in kyWtqIf0(BT)do _y3z[NAP_5jYs[1]]=NAP_5jYs[2]end;return _y3z end +function S1wg_DG.property(BZnlpW)return function(isN)return +isN[BZnlpW]end end;function S1wg_DG.propertyOf(yRADzw1v) +return function(Jafp)return yRADzw1v[Jafp]end end;function S1wg_DG.toBoolean(XWh8Ee) +return not not XWh8Ee end +function S1wg_DG.extend(kpezL1e,...)local h={...}for R7yfz_l9,D35PFLu in kyWtqIf0(h)do if -(imac[TDOaFo])~=nil then Mfb6Kb[TDOaFo]=imac[TDOaFo]end end;return Mfb6Kb end -function qxZa6ozV.omit(tLo4,...)local m72l=qxZa6ozV.flatten{...}local npM3DSU={}for HGp4e1,uzJt7E in zupvsz(tLo4)do +v(D35PFLu)=='table'then for wK,qeEwE in l(D35PFLu)do kpezL1e[wK]=qeEwE end end end;return kpezL1e end +function S1wg_DG.functions(cbtvFnSa,fYKH_)cbtvFnSa=cbtvFnSa or S1wg_DG;local W={}for o,Mm99M in l(cbtvFnSa)do if +v(Mm99M)=='function'then W[#W+1]=o end end +if fYKH_ then +local l6YH=QFKEzBf(cbtvFnSa) +if l6YH and l6YH.__index then +local gf2=S1wg_DG.functions(l6YH.__index,fYKH_)for F744Ew,zgxKF4 in kyWtqIf0(gf2)do W[#W+1]=zgxKF4 end end end;return W end +function S1wg_DG.clone(UlvVvSBR,i2i)if v(UlvVvSBR)~='table'then return UlvVvSBR end +local uRGAL={} +for UUlqXyb6,fOR92g8 in l(UlvVvSBR)do if v(fOR92g8)=='table'then if not i2i then +uRGAL[UUlqXyb6]=S1wg_DG.clone(fOR92g8,i2i)else uRGAL[UUlqXyb6]=fOR92g8 end else +uRGAL[UUlqXyb6]=fOR92g8 end end;return uRGAL end +function S1wg_DG.tap(jU26,WIPTsAPz,...)WIPTsAPz(jU26,...)return jU26 end;function S1wg_DG.has(DgUx8,imac)return DgUx8[imac]~=nil end +function S1wg_DG.pick(xX,...) +local Mfb6Kb=S1wg_DG.flatten{...}local RRjV={}for TDOaFo,tLo4 in l(Mfb6Kb)do +if(xX[tLo4])~=nil then RRjV[tLo4]=xX[tLo4]end end;return RRjV end +function S1wg_DG.omit(m72l,...)local npM3DSU=S1wg_DG.flatten{...}local HGp4e1={}for uzJt7E,sRe5S32N in l(m72l)do if not -qxZa6ozV.include(m72l,HGp4e1)then npM3DSU[HGp4e1]=uzJt7E end end;return npM3DSU end -function qxZa6ozV.template(sRe5S32N,Bp)if not Bp then return sRe5S32N end;for rg,S in zupvsz(Bp)do if not sRe5S32N[rg]then -sRe5S32N[rg]=S end end;return sRe5S32N end -function qxZa6ozV.isEqual(Fem,cHmVGY,g29sXR)local Vat=l6Sm5(Fem)local sfnkWAy8=l6Sm5(cHmVGY)if Vat~=sfnkWAy8 then -return false end -if Vat~='table'then return(Fem==cHmVGY)end;local hbJSGe9=p(Fem)local pI=p(cHmVGY) -if g29sXR then if(hbJSGe9 or pI)and -(hbJSGe9.__eq or pI.__eq)then +S1wg_DG.include(npM3DSU,uzJt7E)then HGp4e1[uzJt7E]=sRe5S32N end end;return HGp4e1 end;function S1wg_DG.template(Bp,rg)if not rg then return Bp end +for S,Fem in l(rg)do if not Bp[S]then Bp[S]=Fem end end;return Bp end +function S1wg_DG.isEqual(cHmVGY,g29sXR,Vat) +local sfnkWAy8=v(cHmVGY)local hbJSGe9=v(g29sXR)if sfnkWAy8 ~=hbJSGe9 then return false end;if +sfnkWAy8 ~='table'then return(cHmVGY==g29sXR)end +local pI=QFKEzBf(cHmVGY)local B7jhm=QFKEzBf(g29sXR) +if Vat then if(pI or B7jhm)and +(pI.__eq or B7jhm.__eq)then return -hbJSGe9.__eq(Fem,cHmVGY)or pI.__eq(cHmVGY,Fem)or(Fem==cHmVGY)end end -if qxZa6ozV.size(Fem)~=qxZa6ozV.size(cHmVGY)then return false end;local B7jhm;for hj3,FKxU4 in zupvsz(Fem)do B7jhm=cHmVGY[hj3] -if B7jhm==nil or not -qxZa6ozV.isEqual(FKxU4,B7jhm,g29sXR)then return false end end;for UW in -zupvsz(cHmVGY)do if Fem[UW]==nil then return false end end;return -true end -function qxZa6ozV.result(tReY,lex,...) -if tReY[lex]then if qxZa6ozV.isCallable(tReY[lex])then return -tReY[lex](tReY,...)else return tReY[lex]end end -if qxZa6ozV.isCallable(lex)then return lex(tReY,...)end end -function qxZa6ozV.isTable(h79Pm)return l6Sm5(h79Pm)=='table'end -function qxZa6ozV.isCallable(vksQpy4)return -((l6Sm5(vksQpy4)=='function')or +pI.__eq(cHmVGY,g29sXR)or B7jhm.__eq(g29sXR,cHmVGY)or(cHmVGY==g29sXR)end end +if S1wg_DG.size(cHmVGY)~=S1wg_DG.size(g29sXR)then return false end;local hj3 +for FKxU4,UW in l(cHmVGY)do hj3=g29sXR[FKxU4]if hj3 ==nil or +not S1wg_DG.isEqual(UW,hj3,Vat)then return false end end +for tReY in l(g29sXR)do if cHmVGY[tReY]==nil then return false end end;return true end +function S1wg_DG.result(lex,h79Pm,...) +if lex[h79Pm]then if S1wg_DG.isCallable(lex[h79Pm])then return +lex[h79Pm](lex,...)else return lex[h79Pm]end end +if S1wg_DG.isCallable(h79Pm)then return h79Pm(lex,...)end end +function S1wg_DG.isTable(vksQpy4)return v(vksQpy4)=='table'end +function S1wg_DG.isCallable(gPCIWPt)return ( -(l6Sm5(vksQpy4)=='table')and p(vksQpy4)and p(vksQpy4).__call~=nil)or false)end -function qxZa6ozV.isArray(gPCIWPt) -if not(l6Sm5(gPCIWPt)=='table')then return false end;local l4Byxa7=0;for Fn8OR in zupvsz(gPCIWPt)do l4Byxa7=l4Byxa7+1;if gPCIWPt[l4Byxa7]==nil then -return false end end -return true end;function qxZa6ozV.isIterable(X1Z0van)return -qxZa6ozV.toBoolean((QFKEzBf(zupvsz,X1Z0van)))end -function qxZa6ozV.isEmpty(C_ACFsd)if( -C_ACFsd==nil)then return true end;if l6Sm5(C_ACFsd)=='string'then return -#C_ACFsd==0 end;if l6Sm5(C_ACFsd)=='table'then return -v(C_ACFsd)==nil end;return true end -function qxZa6ozV.isString(GC)return l6Sm5(GC)=='string'end -function qxZa6ozV.isFunction(SC7gSvMB)return l6Sm5(SC7gSvMB)=='function'end;function qxZa6ozV.isNil(Ei)return Ei==nil end;function qxZa6ozV.isNumber(GFuK1ut)return l6Sm5(GFuK1ut)== -'number'end;function qxZa6ozV.isNaN(SXmRY3i) -return -l6Sm5(SXmRY3i)=='number'and SXmRY3i~=SXmRY3i end -function qxZa6ozV.isFinite(b)if -l6Sm5(b)~='number'then return false end;return b>-BCf7 and b<BCf7 end -function qxZa6ozV.isBoolean(KApFr)return l6Sm5(KApFr)=='boolean'end;function qxZa6ozV.isInteger(jE) -return l6Sm5(jE)=='number'and RlMSrmdD(jE)==jE end -do -qxZa6ozV.forEach=qxZa6ozV.each;qxZa6ozV.forEachi=qxZa6ozV.eachi -qxZa6ozV.update=qxZa6ozV.adjust;qxZa6ozV.loop=qxZa6ozV.cycle;qxZa6ozV.collect=qxZa6ozV.map -qxZa6ozV.inject=qxZa6ozV.reduce;qxZa6ozV.foldl=qxZa6ozV.reduce -qxZa6ozV.injectr=qxZa6ozV.reduceRight;qxZa6ozV.foldr=qxZa6ozV.reduceRight -qxZa6ozV.mapr=qxZa6ozV.mapReduce;qxZa6ozV.maprr=qxZa6ozV.mapReduceRight -qxZa6ozV.any=qxZa6ozV.include;qxZa6ozV.some=qxZa6ozV.include -qxZa6ozV.contains=qxZa6ozV.include;qxZa6ozV.filter=qxZa6ozV.select -qxZa6ozV.discard=qxZa6ozV.reject;qxZa6ozV.every=qxZa6ozV.all -qxZa6ozV.takeWhile=qxZa6ozV.selectWhile;qxZa6ozV.rejectWhile=qxZa6ozV.dropWhile -qxZa6ozV.pop=qxZa6ozV.shift;qxZa6ozV.remove=qxZa6ozV.pull -qxZa6ozV.rmRange=qxZa6ozV.removeRange;qxZa6ozV.chop=qxZa6ozV.removeRange -qxZa6ozV.sub=qxZa6ozV.slice;qxZa6ozV.head=qxZa6ozV.first;qxZa6ozV.take=qxZa6ozV.first -qxZa6ozV.tail=qxZa6ozV.rest;qxZa6ozV.skip=qxZa6ozV.last -qxZa6ozV.without=qxZa6ozV.difference;qxZa6ozV.diff=qxZa6ozV.difference -qxZa6ozV.symdiff=qxZa6ozV.symmetricDifference;qxZa6ozV.xor=qxZa6ozV.symmetricDifference -qxZa6ozV.uniq=qxZa6ozV.unique;qxZa6ozV.isuniq=qxZa6ozV.isunique -qxZa6ozV.transpose=qxZa6ozV.zip;qxZa6ozV.part=qxZa6ozV.partition -qxZa6ozV.perm=qxZa6ozV.permutation;qxZa6ozV.transposeWith=qxZa6ozV.zipWith -qxZa6ozV.intersperse=qxZa6ozV.interpose;qxZa6ozV.sliding=qxZa6ozV.aperture -qxZa6ozV.mirror=qxZa6ozV.invert;qxZa6ozV.join=qxZa6ozV.concat;qxZa6ozV.average=qxZa6ozV.mean -qxZa6ozV.always=qxZa6ozV.constant;qxZa6ozV.cache=qxZa6ozV.memoize -qxZa6ozV.juxt=qxZa6ozV.juxtapose;qxZa6ozV.uid=qxZa6ozV.uniqueid -qxZa6ozV.iter=qxZa6ozV.iterator;qxZa6ozV.tabulate=qxZa6ozV.array;qxZa6ozV.nAry=qxZa6ozV.ary -qxZa6ozV.methods=qxZa6ozV.functions;qxZa6ozV.choose=qxZa6ozV.pick;qxZa6ozV.drop=qxZa6ozV.omit -qxZa6ozV.defaults=qxZa6ozV.template;qxZa6ozV.compare=qxZa6ozV.isEqual -qxZa6ozV.matches=qxZa6ozV.isEqual end -do local yVVmXC={}local MkxwoCeK={}MkxwoCeK.__index=yVVmXC;local function AT(_8KO)return -odpE({_value=_8KO,_wrapped=true},MkxwoCeK)end -odpE(MkxwoCeK,{__call=function(NI,PE) -return AT(PE)end,__index=function(a,GhVWeuQs,...)return yVVmXC[GhVWeuQs]end})function MkxwoCeK.chain(kQlY)return AT(kQlY)end;function MkxwoCeK:value() -return self._value end -yVVmXC.chain,yVVmXC.value=MkxwoCeK.chain,MkxwoCeK.value -for xIl1shq,qv in zupvsz(qxZa6ozV)do -if xIl1shq~='operator'then -yVVmXC[xIl1shq]=function(pbEt6T,...) -local MBdHQ=l6Sm5(pbEt6T)=='table'and -l(pbEt6T,'_wrapped')or false;if MBdHQ then local STXAhhM=pbEt6T._value;local assFn=qv(STXAhhM,...)return AT(assFn)else return -qv(pbEt6T,...)end end end end;yVVmXC.operator=qxZa6ozV.operator;yVVmXC.op=qxZa6ozV.operator -yVVmXC.import=function(EXpWzv,kq)EXpWzv= -EXpWzv or _ENV or _G;local up=qxZa6ozV.functions() -for wlI_l,nK7J in -Mw(up)do if l(EXpWzv,nK7J)~=nil then if not kq then -rawset(EXpWzv,nK7J,qxZa6ozV[nK7J])end else -rawset(EXpWzv,nK7J,qxZa6ozV[nK7J])end end;return EXpWzv end;MkxwoCeK._VERSION='Moses v'..e -MkxwoCeK._URL='http://github.com/Yonaba/Moses' -MkxwoCeK._LICENSE='MIT <http://raw.githubusercontent.com/Yonaba/Moses/master/LICENSE>' -MkxwoCeK._DESCRIPTION='utility-belt library for functional programming in Lua'return MkxwoCeK end
\ No newline at end of file +(v(gPCIWPt)=='function')or( +(v(gPCIWPt)=='table')and QFKEzBf(gPCIWPt)and +QFKEzBf(gPCIWPt).__call~=nil)or false)end +function S1wg_DG.isArray(l4Byxa7) +if not(v(l4Byxa7)=='table')then return false end;local Fn8OR=0;for X1Z0van in l(l4Byxa7)do Fn8OR=Fn8OR+1 +if l4Byxa7[Fn8OR]==nil then return false end end;return true end;function S1wg_DG.isIterable(C_ACFsd) +return S1wg_DG.toBoolean((l6Sm5(l,C_ACFsd)))end +function S1wg_DG.isEmpty(GC) +if(GC==nil)then return true end;if v(GC)=='string'then return#GC==0 end;if v(GC)=='table'then +return e(GC)==nil end;return true end +function S1wg_DG.isString(SC7gSvMB)return v(SC7gSvMB)=='string'end;function S1wg_DG.isFunction(Ei)return v(Ei)=='function'end;function S1wg_DG.isNil(GFuK1ut)return +GFuK1ut==nil end;function S1wg_DG.isNumber(SXmRY3i)return +v(SXmRY3i)=='number'end;function S1wg_DG.isNaN(b)return +v(b)=='number'and b~=b end;function S1wg_DG.isFinite(KApFr)if v(KApFr)~='number'then return +false end +return KApFr>-S9TO and KApFr<S9TO end;function S1wg_DG.isBoolean(jE)return v(jE)== +'boolean'end +function S1wg_DG.isInteger(yVVmXC)return +v(yVVmXC)=='number'and pS78Y(yVVmXC)==yVVmXC end +do S1wg_DG.forEach=S1wg_DG.each;S1wg_DG.forEachi=S1wg_DG.eachi +S1wg_DG.update=S1wg_DG.adjust;S1wg_DG.loop=S1wg_DG.cycle;S1wg_DG.collect=S1wg_DG.map +S1wg_DG.inject=S1wg_DG.reduce;S1wg_DG.foldl=S1wg_DG.reduce +S1wg_DG.injectr=S1wg_DG.reduceRight;S1wg_DG.foldr=S1wg_DG.reduceRight +S1wg_DG.mapr=S1wg_DG.mapReduce;S1wg_DG.maprr=S1wg_DG.mapReduceRight +S1wg_DG.any=S1wg_DG.include;S1wg_DG.some=S1wg_DG.include;S1wg_DG.contains=S1wg_DG.include +S1wg_DG.filter=S1wg_DG.select;S1wg_DG.discard=S1wg_DG.reject;S1wg_DG.every=S1wg_DG.all +S1wg_DG.takeWhile=S1wg_DG.selectWhile;S1wg_DG.rejectWhile=S1wg_DG.dropWhile;S1wg_DG.pop=S1wg_DG.shift +S1wg_DG.remove=S1wg_DG.pull;S1wg_DG.rmRange=S1wg_DG.removeRange +S1wg_DG.chop=S1wg_DG.removeRange;S1wg_DG.sub=S1wg_DG.slice;S1wg_DG.head=S1wg_DG.first +S1wg_DG.take=S1wg_DG.first;S1wg_DG.tail=S1wg_DG.rest;S1wg_DG.skip=S1wg_DG.last +S1wg_DG.without=S1wg_DG.difference;S1wg_DG.diff=S1wg_DG.difference +S1wg_DG.symdiff=S1wg_DG.symmetricDifference;S1wg_DG.xor=S1wg_DG.symmetricDifference +S1wg_DG.uniq=S1wg_DG.unique;S1wg_DG.isuniq=S1wg_DG.isunique;S1wg_DG.transpose=S1wg_DG.zip +S1wg_DG.part=S1wg_DG.partition;S1wg_DG.perm=S1wg_DG.permutation +S1wg_DG.transposeWith=S1wg_DG.zipWith;S1wg_DG.intersperse=S1wg_DG.interpose +S1wg_DG.sliding=S1wg_DG.aperture;S1wg_DG.mirror=S1wg_DG.invert;S1wg_DG.join=S1wg_DG.concat +S1wg_DG.average=S1wg_DG.mean;S1wg_DG.always=S1wg_DG.constant;S1wg_DG.cache=S1wg_DG.memoize +S1wg_DG.juxt=S1wg_DG.juxtapose;S1wg_DG.uid=S1wg_DG.uniqueid;S1wg_DG.iter=S1wg_DG.iterator +S1wg_DG.tabulate=S1wg_DG.array;S1wg_DG.nAry=S1wg_DG.ary;S1wg_DG.methods=S1wg_DG.functions +S1wg_DG.choose=S1wg_DG.pick;S1wg_DG.drop=S1wg_DG.omit;S1wg_DG.defaults=S1wg_DG.template +S1wg_DG.compare=S1wg_DG.isEqual;S1wg_DG.matches=S1wg_DG.isEqual end +do local MkxwoCeK={}local AT={}AT.__index=MkxwoCeK;local function _8KO(NI) +return oUA({_value=NI,_wrapped=true},AT)end +oUA(AT,{__call=function(PE,a)return _8KO(a)end,__index=function(GhVWeuQs,kQlY,...)return +MkxwoCeK[kQlY]end})function AT.chain(xIl1shq)return _8KO(xIl1shq)end +function AT:value()return self._value end;MkxwoCeK.chain,MkxwoCeK.value=AT.chain,AT.value +for qv,pbEt6T in l(S1wg_DG)do +if +qv~='operator'then +MkxwoCeK[qv]=function(MBdHQ,...)local STXAhhM= +v(MBdHQ)=='table'and PizLA9mj(MBdHQ,'_wrapped')or false;if STXAhhM then +local assFn=MBdHQ._value;local EXpWzv=pbEt6T(assFn,...)return _8KO(EXpWzv)else +return pbEt6T(MBdHQ,...)end end end end;MkxwoCeK.operator=S1wg_DG.operator +MkxwoCeK.op=S1wg_DG.operator +MkxwoCeK.import=function(kq,up)kq=kq or _ENV or _G +local wlI_l=S1wg_DG.functions()for nK7J,xv in kyWtqIf0(wlI_l)do +if PizLA9mj(kq,xv)~=nil then if not up then +rawset(kq,xv,S1wg_DG[xv])end else rawset(kq,xv,S1wg_DG[xv])end end +return kq end;AT._VERSION='Moses v'..SWFtRywD +AT._URL='http://github.com/Yonaba/Moses' +AT._LICENSE='MIT <http://raw.githubusercontent.com/Yonaba/Moses/master/LICENSE>'AT._DESCRIPTION='utility-belt library for functional programming in Lua' +return AT end
\ No newline at end of file |