minimal-lisp
Advanced tools
| // miniMAL: https://github.com/kanaka/miniMAL | ||
| // Paste following code to the JS console | ||
| // Example: m.eval(["+", 2, 3]) | ||
| m=new (function(r){function n(n,t,i){if(i){t=Object.create(t);for(var u=0;n.length>u;u++){if("&"==n[u]){t[n[u+1]]=Array.prototype.slice.call(i,u);break}t[n[u]]=i[u]}return t}return Array.isArray(n)?n.map(function(r){return e(r,t)}):"string"==typeof n?n in t?t[n]:r.throw(n+" not found"):n}function t(r,n){for(;Array.isArray(r)&&"string"==typeof r[0]&&r[0]in n&&n[r[0]].ast&&n[r[0]].ast[3];)r=n[r[0]].apply(n[r[0]],r.slice(1));return r}function e(r,i){for(;;){if(!Array.isArray(r))return n(r,i);if(r=t(r,i),!Array.isArray(r))return r;if("def"==r[0])return i[r[1]]=e(r[2],i);if("~"==r[0]){var u=e(r[1],i);return u.ast.push(1),u}if("let"==r[0]){i=Object.create(i);for(var f in r[1])f%2&&(i[r[1][f-1]]=e(r[1][f],i));r=r[2]}else{if("`"==r[0])return r[1];if(".-"==r[0]){var a=n(r.slice(1),i),c=a[0][a[1]];return 2 in a?a[0][a[1]]=a[2]:c}if("."==r[0]){var a=n(r.slice(1),i),c=a[0][a[1]];return c.apply(a[0],a.slice(2))}if("try"==r[0])try{return e(r[1],i)}catch(s){return e(r[2][2],n([r[2][1]],i,[s]))}else if("do"==r[0]){var a=n(r.slice(1,r.length-1),i);r=r[r.length-1]}else if("if"==r[0])r=e(r[1],i)?r[2]:r[3];else{if("fn"==r[0]){var u=function(){return e(r[2],n(r[1],i,arguments))};return u.ast=[r[2],i,r[1]],u}var a=n(r,i),u=a[0];if(!u.ast)return u.apply(u,a.slice(1));r=u.ast[0],i=n(u.ast[2],u.ast[1],a.slice(1))}}}}return r=Object.create(r||this),r.js=eval,r.eval=function(n){return e(n,r)},r["="]=function(r,n){return r===n},r["<"]=function(r,n){return n>r},r["+"]=function(r,n){return r+n},r["-"]=function(r,n){return r-n},r["*"]=function(r,n){return r*n},r["/"]=function(r,n){return r/n},r.isa=function(r,n){return r instanceof n},r.new=function(r){return new(r.bind.apply(r,arguments))},r.del=function(r,n){return delete r[n]},r.throw=function(r){throw r},r.rep=function(n){return JSON.stringify(e(JSON.parse(n),r))},r})() |
| <html> | ||
| <body> | ||
| <pre id=source> | ||
| </pre> | ||
| <script> | ||
| var source = 'for(_=\'return Z;ZY]=X))We(V.slicVUU1WT,rR(nQ[1]PR)KnPIVIKHinG G F"==E.asD,iCifBGstanceof @ @Array9!Q9WZ8let7{7 t=6n[0]5E5)446iQU1t[0]K,e=strGgJSON.n=[teDt[2]nt){ZVObjectfor(,ttypeof I,")=>throwelse(... : n"5parsVn.length-1B("function.creatV)P]YmGiMAL=Q){ tQ){;n9&&5G t&&t[5]._M;)t[5] nTYn} eQK{;;){B(8iQK;B(tQK,8n;def4Zr[IXVK;~HYt._M=1}74{r=r);7 tFI)t%2&&(r[I-1]XVI]K);}{`4ZI;.-2Ft?PXt:e}.e.apply(U2W}try4try{ZH}catch(C([P]R,]W} do,)K;n[]} B4H?:n[3];{fn C(IRW}YtDt=[R,I]}6iQ;B(!)Ze tT;[0]R=i(,PT}}}}}7 i=(tCK{Zr?(i=i).somVQ,e"&En?i[e+1]XrUe):(i[nXr[e],!1WC):t9?t.map( nV5CW:"Et?tFi?i]:n.(t+" not found"):t}YDsign(n||this),{js:eval,eval: tV,n),"====<<++--**//ICsa5@Iype5,newnew(5.bGd nW,delde7e 5[I],{ 5}Read5)Rep: tBy(V),nW})}\';g=/[^ -3:-?AJL-OS[-~]/.exec(_);)with(_.split(g))_=join(shift());eval(_)'; | ||
| document.getElementById('source').innerText = source; | ||
| </script> | ||
| </body> | ||
| </html> |
+4
-0
| ["do", | ||
| ["def", "new", ["fn", ["a", "&", "b"], | ||
| [".", "Reflect", ["`", "construct"], "a", "b"]]], | ||
| ["def", "del", ["fn", ["a", "b"], | ||
| [".", "Reflect", ["`", "deleteProperty"], "a", "b"]]], | ||
| ["def", "map", ["fn", ["a", "b"], | ||
@@ -4,0 +8,0 @@ [".", "b", ["`", "map"], ["fn", ["x"], ["a", "x"]]]]], |
+1
-1
@@ -1,1 +0,1 @@ | ||
| for(_='),~,["|","z"|ZZ`zYinX X WvalV;t=U=nR[tQifP)=>K(...I:InKnGmapF(tE.FE=>DstrXgCJSON.B,i)5[0]45,fR4("\\n".VuefacZelse]]Object.let))[2]t.length-1[1]n,",t4.onkeyup]\\n["textareafunctionItKnE4,f.ast{ n=eEP(" t Xstanceof Arraycreate(.slice(< rows=9 cols=60>return "==t4)"G41)[n]; nE5{for(;;){P(!(eE5; defiQ]RE5; {i=i);for( eWt)e%2&&(iQ[e-1RE[e],iUt}{ `t; .-2Wn?n4[n]R:f} .f.apply(n4,n2} do1,)5Ut[]} PtRE5?t:t[3];{ fn{ f=If){nE,eE,i,f};=Q,i,t],f};P(!)fIn1U4,i=e(,,n1}}}}}var e=E,e5{i?(e=e~t.some((n,fK"&"=R?eQ[f+1=if):(e[n]=i[f],!1,e):?t.F(e:"C"==typeof t?tWe?eQ]:nullQ]:t};A=assign(this~{js:eV,eV:A~"====<<++--**//n,FGDn4E}~b.XnerHTML=\'["ZmYmXi"|+zmYMAL"defzfnZn"]|PznZ*znZ-zn",1],1Fz`",[7,8,9.zMathYrandom"</></>\',t=b.children=((Kt=t4.split)Dt?BCPy(n(BparseE~A:"").joX()';g=/[^ -36-AHJL-OST[-y{}]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_=',["~","|"~zz`|ZinY Y XvalW;t=V"==U[tRifQ)=>P(...K:KnPnImapG(tF.GF=>EJSON.DnFC,i)B[0]5B,f=n54("\\n".Wuefaczelse]]typeof let=Object.))[2]t.length-1[1]n,",t5.onkeyup]\\n["textareafunctionKtPC5,f.astcreate({ n=eF Q("t Ystanceof Array.slice(< rows=9 cols=60>return Ut5)"I5 1)4[n]; CB{for(;;){Q(!(eFB;defiR]=CB;{ii);for( eXt)e%2&&(iR[e-1=C[e],iVt}{`t;.-2Xn?n5[n]=n:f}.f.apply(n5,n2}do 1,)BVt[]} Qt=CB?t:t[3];{fn{ f=Kf){C,eF,i,f};=R,i,t],f} 4;Q(!)fKn1V5,i=e(,,n1}}}}}var e=F,eB{i?(ee),t.some((n,fP"&Un?eR[f+1=if):(e[n]=i[f],0,e):?t.G(e:"Ut?tXe?eR]:nullR]:t};AassigChis,{js:eW,eW:A),"====<<++--**//n,GIEn5F}),b.YnerHTML=\'["zmZmYi"~+|mZMAL"def|fnzn"]~Q|nz*|nz-|n",1],1G|`",[7,8,9.|MathZrandom"</></>\',t=b.children=((Pt=t5.split)Et?DstrYgQy(n(DparseF),A:"").joY()';g=/[^ -36-AHJL-OST[-y{}]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
+1
-1
@@ -1,1 +0,1 @@ | ||
| for(_='return Z;ZY]=X))We(V.slicVUU1WT,rR(nQ[1]PR)KnPIVIKHinG G F"==E.asD,iCifBGstanceof @ @Array9!Q9WZ8let7{7 t=6n[0]5E5)446iQU1t[0]K,e=strGgJSON.n=[teDt[2]nt){ZVObjectfor(,ttypeof I,")=>throwelse(... : n"5parsVn.length-1B("function.creatV)P]YmGiMAL=Q){ tQ){;n9&&5G t&&t[5]._M;)t[5] nTYn} eQK{;;){B(8iQK;B(tQK,8n;def4Zr[IXVK;~HYt._M=1}74{r=r);7 tFI)t%2&&(r[I-1]XVI]K);}{`4ZI;.-2Ft?PXt:e}.e.apply(U2W}try4try{ZH}catch(C([P]R,]W} do,)K;n[]} B4H?:n[3];{fn C(IRW}YtDt=[R,I]}6iQ;B(!)Ze tT;[0]R=i(,PT}}}}}7 i=(tCK{Zr?(i=i).somVQ,e"&En?i[e+1]XrUe):(i[nXr[e],!1WC):t9?t.map( nV5CW:"Et?tFi?i]:n.(t+" not found"):t}YDsign(n||this),{js:eval,eval: tV,n),"====<<++--**//ICsa5@Iype5,newnew(5.bGd nW,delde7e 5[I],{ 5}Read5)Rep: tBy(V),nW})}';g=/[^ -3:-?AJL-OS[-~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='return Z;ZY]=X))We(V.slicVUU1WT,rR(nQ[1]PR)KnPIVIKHinG G F"==E.asD,iCifBGstanceof 9 9Array8!Q8WZ7let6{6 t=5n[0]4E4)5iQU1t[0]K,e=JSON.n=[teDt[2]nt){ZVObjectfor(,tI,")=>throwelse(...:n " 4parsVn.length-1typeof B("function.creatV)P]YmGiMAL=Q){ tQ){;n8&&4G t&&t[4].M;)t[4]nTYn} eQK{;;){B(7iQK;B(tQK,7n;defZr[IXVK;~HYt.M=1}6{r=r);6 tFI)t%2&&(r[I-1]XVI]K);}{`ZI;.-2Ft?PXt:e}.e.apply(U2W}trytry{ZH}catch(C([P]R,]W} do,)K;n[]} BH?:n[3];{fnC(IRW}YtDt=[R,I]}5iQ;B(!)ZetT;[0]R=i(,PT}}}}}6 i=(tCK{Zr?(i=i).somVQ,e"&En?i[e+1]XrUe):(i[nXr[e],0WC):t8?t.map(nV4CW:"Et?tFi?i]:n.(t+" not found"):t}YDsign(n||this),{js:eval,eval:tV,n),"====<<++--**//ICsa 49Iype 4,new new(4.bGdnW,del de6e 4[I], { 4}Read 4)Rep:tstrGgBy(V),nW})}';g=/[^ -3:-AJL-OS[-~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
+1
-1
@@ -1,1 +0,1 @@ | ||
| for(_=']=|,izinZt(Y))X.slice(WW1XV Z UvalT"==R[0]QifPreL,rKK)I[1]HnHG(nEZstanceof D DArrayCLturn B!ECXB@let9{9 e=7nQ6R6)55744iEW1$),#eQK#t=strZgslurpJSON.n=[e)=>[2]ne){BYfor(,etypeof Object.G,"throwelse(...:n"6 :en.length-1t.astparse(P("functioncLate($)H];Bmodule.exports=E){ eE){;nC&&6Z e&&e[6]._M;)e[6]nV;Bn} tEI{;;){P(@iEI;P(eEK#@n;def5Br[G|YI;~4tEHI;Be._M=1}95{r=r);9 eUG)e%2&&(r[G-1]|tEH]I);}{`5BG;.-2Ue?H|e:t}.t.apply(W2X}try5try{BtEHI}catch(z([H]K,]X} do$,#r);n[]} P5tEHI?:n[3];{fn4zEHKX};Be.ast=[K,G]}7iE;P(!)BteV;QK=i(,HV}}}}}9 i=(ezI{Br?(i=i).some(E,t"&Rn?i[t+1]|rWt):(i[n|r[t],!1)#i):eC?e.map(nY6zX:"Re?eUi?i]:n.(e+" not found"):e};Bassign(n#{js:eTTY,n#"= ===< <+ +- -* */ /Gzsa6DG,type6,newnew(6.bZdn)#delde9e 6[G],{ 6}Kead6#LquiL("fs").LadFileSync(6,"utf8"#loadn.eT(n.(X#LpPy(Y#nX})}';g=/[^ -"%-38:-?AFJM-OS[-y{}~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='re||turn z;z_]=^inZ,iY))X.slice(WW1XV"==U[0]TifRt(Q,rPP)L[1]KnKI(nHZstanceof G GArrayE!HEXzDletC{C e=BnT@U@)99B77iHW16),5eT4P5t=4JSON.n=[e)=>t.A[2]ne){zQ Z for(,e,"utf8"Object.I,"throwelse(...:n"@:e n.length-1typeof parse(R("functionc|ate(|qui|("fs").|adFileSync(6)K]_module.exports=H){ eH){;nE&&@Z e&&e[@].M;)e[@]nV_n} tHL{;;){R(DiHL;R(eHP5Dn;def9zr[I^QL;~7tHKL_e.M=1}C9{r=r);C eI)e%2&&(r[I-1]^tHK]L);}{`9zI;.-2e?4K^e:t}.t.apply(4W2X}try9try{ztHKL}catch(Y([K]P,]X} do6,5r);n[]} R9tHKL?:n[3];{fn7YHKPX}_e.A=[P,I]}BiH;R(!)zteV;TP=i(,KV}}}}}C i=(eYL{zr?(i=i).some(H,t"&Un?i[t+1]^rWt):(i[n^r[t],0)5i):eE?e.map(nQ@YX:"Ue?ei?i]:n.(e+" not found"):e}_assign(n5{js:evalval Q4,n5"====<<++--**//IYsa@GI,type@,newnew(@.bZdn)5deldeCe @[I],{ @}Pead@5slurp@5load Q4)5n5|p strZgRy(Q45nX})}';g=/[^ -38:-?AFJM-OS[\]`-y{}~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
+1
-1
| { | ||
| "name": "minimal-lisp", | ||
| "version": "1.0.0", | ||
| "version": "1.0.1", | ||
| "description": "miniMAL: a Clojure-inspired Lisp in < 1024 bytes of JavaScript", | ||
@@ -5,0 +5,0 @@ "keywords": ["Clojure", "clojure", "Lisp", "lisp", "mal", "make-a-lisp", "1K", "1024", "golf", "JS1K", "js1k", "JSON", "json", "tail-call", "TCO", "macros", "interop", "lexical", "functional"], |
@@ -1,1 +0,1 @@ | ||
| function n(n,r){return n}require("repl").start({eval:(...r)=>r[3](!1,JSON.stringify(n(JSON.parse(r[0]),{}))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(n,r){return n}require("repl").start({eval:(...r)=>r[3](0,n(JSON.parse(r[0]),{})),writer:JSON.stringify,terminal:0})}() |
@@ -1,1 +0,1 @@ | ||
| function n(n,r){return n}require("repl").start({eval:(...r)=>r[3](!1,JSON.stringify(n(JSON.parse(r[0]),{}))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(n,r){return n}require("repl").start({eval:(...r)=>r[3](0,n(JSON.parse(r[0]),{})),writer:JSON.stringify,terminal:0})}() |
@@ -5,2 +5,4 @@ // miniMAL | ||
| !function() { | ||
| function EVAL(ast, env) { | ||
@@ -13,4 +15,6 @@ return ast | ||
| require("repl").start({ | ||
| eval: (...a) => a[3](!1,JSON.stringify(EVAL(JSON.parse(a[0]),{}))), | ||
| writer: (...a) => a[0], | ||
| terminal: false}) | ||
| eval: (...a) => a[3](0,EVAL(JSON.parse(a[0]),{})), | ||
| writer: JSON.stringify, | ||
| terminal: 0}) | ||
| }() |
@@ -1,1 +0,1 @@ | ||
| for(_=',i)JSON.[0] stringunction(n(...t)=>n[1],"return instanceof Array:(...n)=>n f n{if(!(n))t;let r=t,f=r ;f.apply(f,r.slice(1))}let t=f(t{t?t.map(n(t ):""==typeof t?t in i?i[t]:null[t]:t};A={"+"+-"-*"*/"/n[1]},require("repl").start({eval:t[3](!1,ify(n(parse(t ),A))),writer,terminal:!1})';g=/[-]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_=',i)JSON.[0] typeof (n(...t)=>n[1],"return function instanceof Array":(...n)=>n !(){ n{if(!(n))t;let r=t,f=r ;f.apply(f,r.slice(1))}let t=(t{t?t.map(n(t ):""==t?t in i?i[t]:null[t]:t};A={"++--**//n[1]},require("repl").start({eval:t[3](0,n(parse(t ),A)),writer:stringify,terminal:0})}()';g=/[-]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| function n(n,i){if(!(n instanceof Array))return t(n,i);let r=t(n,i),f=r[0];return f.apply(f,r.slice(1))}let t=function(t,i){return t instanceof Array?t.map((...t)=>n(t[0],i)):"string"==typeof t?t in i?i[t]:null[t]:t};E={"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1]},require("repl").start({eval:(...t)=>t[3](!1,JSON.stringify(n(JSON.parse(t[0]),E))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(n,i){if(!(n instanceof Array))return t(n,i);let r=t(n,i),f=r[0];return f.apply(f,r.slice(1))}let t=function(t,i){return t instanceof Array?t.map((...t)=>n(t[0],i)):typeof ""==typeof t?t in i?i[t]:null[t]:t};E={"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1]},require("repl").start({eval:(...t)=>t[3](0,n(JSON.parse(t[0]),E)),writer:JSON.stringify,terminal:0})}() |
+7
-3
@@ -5,2 +5,4 @@ // miniMAL | ||
| !function() { | ||
| let eval_ast = function(ast, env) { | ||
@@ -36,4 +38,6 @@ // Evaluate the form/ast | ||
| require("repl").start({ | ||
| eval: (...a) => a[3](!1,JSON.stringify(EVAL(JSON.parse(a[0]),E))), | ||
| writer: (...a) => a[0], | ||
| terminal: false}) | ||
| eval: (...a) => a[3](0,EVAL(JSON.parse(a[0]),E)), | ||
| writer: JSON.stringify, | ||
| terminal: 0}) | ||
| }() |
@@ -1,1 +0,1 @@ | ||
| for(_='ren([t],e)JSON.;if("[0]"==r)stringt in r[1]n,"let Object. unction(r(...t)=>r[2] cate( instanceof Arrayturn :(...n)=>nf n{if(!(r))tdefe[r]=let{e=e);for()t%2&&(e[r[t-1]]=r);}{n=t,i=n;i.apply(i,n.slice(1))}}t=f(t,r){t?t.map(t,r)):""==typeof t??r:null:t};A= assigglobal),{"+"+-"-*"*/"/n}),qui("pl").start({eval:t[3](!1,ify(parse(t),A))),writer,terminal:!1})';g=/[-]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='ren(,i)[t],r)JSON.;if("[0]"==i)t in i[1]n,"let typeof (i(...t)=>=Object.i[2]function instanceof Arrayturn ":(...n)=>n!(){ n{if(!(i))tdefr[i]=let{rcate(r);for()t%2&&(r[i[t-1]]=i);}{n=t,e=n;e.apply(e,n.slice(1))}}t=(t{t?t.map(t): ""== t??i:null:t},iassigthis,{"++--**//n});qui("pl").start({eval:t[3](0,parse(t)),writer:stringify,terminal:0})}()';g=/[-]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| function n(r,e){if(!(r instanceof Array))return t(r,e);if("def"==r[0])return e[r[1]]=n(r[2],e);if("let"==r[0]){e=Object.create(e);for(let t in r[1])t%2&&(e[r[1][t-1]]=n(r[1][t],e));return n(r[2],e)}{let n=t(r,e),i=n[0];return i.apply(i,n.slice(1))}}let t=function(t,r){return t instanceof Array?t.map((...t)=>n(t[0],r)):"string"==typeof t?t in r?r[t]:null[t]:t};E=Object.assign(Object.create(global),{"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1]}),require("repl").start({eval:(...t)=>t[3](!1,JSON.stringify(n(JSON.parse(t[0]),E))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(i,r){if(!(i instanceof Array))return t(i,r);if("def"==i[0])return r[i[1]]=n(i[2],r);if("let"==i[0]){r=Object.create(r);for(let t in i[1])t%2&&(r[i[1][t-1]]=n(i[1][t],r));return n(i[2],r)}{let n=t(i,r),e=n[0];return e.apply(e,n.slice(1))}}let t=function(t,i){return t instanceof Array?t.map((...t)=>n(t[0],i)):typeof ""==typeof t?t in i?i[t]:null[t]:t},i=Object.assign(this,{"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1]});require("repl").start({eval:(...t)=>t[3](0,n(JSON.parse(t[0]),i)),writer:JSON.stringify,terminal:0})}() |
+8
-4
@@ -5,2 +5,4 @@ // miniMAL | ||
| !function() { | ||
| let eval_ast = function(ast, env) { | ||
@@ -39,3 +41,3 @@ // Evaluate the form/ast | ||
| E = Object.assign(Object.create(global), { | ||
| let E = Object.assign(this, { | ||
| "+": (...a) => a[0]+a[1], | ||
@@ -49,4 +51,6 @@ "-": (...a) => a[0]-a[1], | ||
| require("repl").start({ | ||
| eval: (...a) => a[3](!1,JSON.stringify(EVAL(JSON.parse(a[0]),E))), | ||
| writer: (...a) => a[0], | ||
| terminal: false}) | ||
| eval: (...a) => a[3](0,EVAL(JSON.parse(a[0]),E)), | ||
| writer: JSON.stringify, | ||
| terminal: 0}) | ||
| }() |
@@ -1,1 +0,1 @@ | ||
| for(_='(iCnCB),re[t]"==if()=>(...[0]:nn"JSON..map(stringt in ilet ))Object.[1]n,";" .slice(functionB[2],e) instanceof Arrayi)cate(turn B{!CtC defe[i]= let{e=e);for()t%2&&(e[i[t-1]]=B);}"dotC1)[i.length-2] ifB?:B[3] fnr){,tC,e,r};{n=tC,r=n;r.apply(r,n1}}t=(t,i{e?C=it.some((n,r"&n?i[t[r+1]]=er):C[n]=e[r],!1,i):t?ttn(t,i:"typeof t??i:null:t};A=assign(global{"====<<++--**//n,list,mapt=>n(t}qui("pl").start({eval:tt[3](!1,ify(n(parse(tAwriter,terminal:!1})';g=/[-BC]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='(iCnCB,i(tre[t]"==if(JSON..map()))=>t in ilet typeof =Object.(...[0][1]n,";".slice(B[2] cate(,r):nn instanceof Arrayfunctioni)turn "!(){ B{!CtCdefr[i]= let{rr);for()t%2&&(r[i[t-1]]=B); }"dotC1)[i.length-2]ifB? :B[3]fne){ ,tC,r,e};{n=tC,e=n;e.apply(e,n1}}t={r?Ci),t.some((n,e"&n?i[t[e+1]]=re):C[n]=r[e],0):t?ttn:"t??i:null:t}assignhis,{"====<<++--**//n,list,mapt=>n});qui("pl").start({eval:tt[3](0,n(parse),writer:stringify,terminal:0})}()';g=/[-BC]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| function n(i,e){if(!(i instanceof Array))return t(i,e);if("def"==i[0])return e[i[1]]=n(i[2],e);if("let"==i[0]){e=Object.create(e);for(let t in i[1])t%2&&(e[i[1][t-1]]=n(i[1][t],e));return n(i[2],e)}if("do"==i[0])return t(i.slice(1),e)[i.length-2];if("if"==i[0])return n(i[1],e)?n(i[2],e):n(i[3],e);if("fn"==i[0])return function(...r){return n(i[2],t(i[1],e,r))};{let n=t(i,e),r=n[0];return r.apply(r,n.slice(1))}}let t=function(t,i,e){return e?(i=Object.create(i),t.some((n,r)=>"&"==n?i[t[r+1]]=e.slice(r):(i[n]=e[r],!1)),i):t instanceof Array?t.map((...t)=>n(t[0],i)):"string"==typeof t?t in i?i[t]:null[t]:t};E=Object.assign(Object.create(global),{"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],list:(...n)=>n,map:(...n)=>n[1].map(t=>n[0](t))}),require("repl").start({eval:(...t)=>t[3](!1,JSON.stringify(n(JSON.parse(t[0]),E))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(i,r){if(!(i instanceof Array))return t(i,r);if("def"==i[0])return r[i[1]]=n(i[2],r);if("let"==i[0]){r=Object.create(r);for(let t in i[1])t%2&&(r[i[1][t-1]]=n(i[1][t],r));return n(i[2],r)}if("do"==i[0])return t(i.slice(1),r)[i.length-2];if("if"==i[0])return n(i[1],r)?n(i[2],r):n(i[3],r);if("fn"==i[0])return function(...e){return n(i[2],t(i[1],r,e))};{let n=t(i,r),e=n[0];return e.apply(e,n.slice(1))}}let t=function(t,i,r){return r?(i=Object.create(i),t.some((n,e)=>"&"==n?i[t[e+1]]=r.slice(e):(i[n]=r[e],0)),i):t instanceof Array?t.map((...t)=>n(t[0],i)):typeof ""==typeof t?t in i?i[t]:null[t]:t},i=Object.assign(this,{"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],list:(...n)=>n,map:(...n)=>n[1].map(t=>n[0](t))});require("repl").start({eval:(...t)=>t[3](0,n(JSON.parse(t[0]),i)),writer:JSON.stringify,terminal:0})}() |
@@ -5,2 +5,4 @@ // miniMAL | ||
| !function() { | ||
| // 2 args: eval_ast, 3 args: env_bind | ||
@@ -13,3 +15,3 @@ let eval_ast_or_bind = function(ast, env, exprs) { | ||
| ast.some((a,i) => a == "&" ? env[ast[i+1]] = exprs.slice(i) | ||
| : (env[a] = exprs[i], false) ) | ||
| : (env[a] = exprs[i], 0)) | ||
| return env | ||
@@ -61,3 +63,3 @@ } | ||
| E = Object.assign(Object.create(global), { | ||
| let E = Object.assign(this, { | ||
| "=": (...a) => a[0]===a[1], | ||
@@ -75,4 +77,6 @@ "<": (...a) => a[0]<a[1], | ||
| require("repl").start({ | ||
| eval: (...a) => a[3](!1,JSON.stringify(EVAL(JSON.parse(a[0]),E))), | ||
| writer: (...a) => a[0], | ||
| terminal: false}) | ||
| eval: (...a) => a[3](0,EVAL(JSON.parse(a[0]),E)), | ||
| writer: JSON.stringify, | ||
| terminal: 0}) | ||
| }() |
@@ -1,1 +0,1 @@ | ||
| for(_='st4(eZ=nZY[t]X"==W)=>V(...U[0]T:UnVnT"),reJSON..map(;e=e[let {n=tZ4ringt in e))Object.[2]if(e.length-1[1]n,"parse(]}else " ,i)functionr.a4 in4anceof Array.slice(WeT)cate(turn nZ{for(;;){!ZtZ;"defi[e]Y;"let{i=i);for()t%2&&(i[e[t-1]]YX)2 do1,) ifeY?e:e[3];else{"fn{r=Ur){nZ,tZ,i,r};=[e,i,e],r},r=nT;!)rUn1;e=T,i=t(,,n1}}}}t=(t,e{i?Z=et.some((n,rV"&Wn?e[t[r+1]]=ir):Z[n]=i[r],!1,e):t?tUtVn(tT,e:"Wtypeof t??eX:nullX:t};A=assign(global{"====<<++--**//n,li4n,mapnt=>nT(t,adnTARGS:process.argv3)}qui("pl").4art({eval:UtVt[3](!1,ify(n(tTAwriter,terminal:!1})';g=/[-T-Z4]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='[i]Y"==X(tWnWVreUJSON.T.map(;t=t[,t)=>let {n=iWi in t))typeof f.A[2]=Object.if(t.length-1[1]n,"(...Tparse(]}else "[0],e) cUate( instanceof Arrayfunction.slice(:nXt)Uturn "n!(){ V {for(;;){!WiW ;"defe[t]=V ;"let{ee);for()i%2&&(e[t[i-1]]=VY )2do1,) ift=V ?t:t[3];else{"fn{f=f){V,iW,e,f};=[t,e],f} ,f=n;!)fn1;t=,e=i(,,n1}}}}i=(i {e?Wt),i.some((n,f"&Xn?t[i[f+1]]=ef):W[n]=e[f],0):i?iin(i:"Xi??tY:nullY:i}assigVhis,{"====<<++--**//n,listn,mapni=>n(i,Uadn),ARGS:process.argv3)});UquiU("Upl").start({eval:ii[3](0,n(i),writer:Tstringifyerminal:0})}()';g=/[-T-Y]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| function n(e,i){for(;;){if(!(e instanceof Array))return t(e,i);if("def"==e[0])return i[e[1]]=n(e[2],i);if("let"==e[0]){i=Object.create(i);for(let t in e[1])t%2&&(i[e[1][t-1]]=n(e[1][t],i));e=e[2]}else if("do"==e[0]){let n=t(e.slice(1,e.length-1),i);e=e[e.length-1]}else if("if"==e[0])e=n(e[1],i)?e[2]:e[3];else{if("fn"==e[0]){let r=function(...r){return n(e[2],t(e[1],i,r))};return r.ast=[e[2],i,e[1]],r}{let n=t(e,i),r=n[0];if(!r.ast)return r(...n.slice(1));e=r.ast[0],i=t(r.ast[2],r.ast[1],n.slice(1))}}}}let t=function(t,e,i){return i?(e=Object.create(e),t.some((n,r)=>"&"==n?e[t[r+1]]=i.slice(r):(e[n]=i[r],!1)),e):t instanceof Array?t.map((...t)=>n(t[0],e)):"string"==typeof t?t in e?e[t]:null[t]:t};E=Object.assign(Object.create(global),{"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],list:(...n)=>n,map:(...n)=>n[1].map(t=>n[0](t)),read:(...n)=>JSON.parse(n[0]),ARGS:process.argv.slice(3)}),require("repl").start({eval:(...t)=>t[3](!1,JSON.stringify(n(JSON.parse(t[0]),E))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(t,e){for(;;){if(!(t instanceof Array))return i(t,e);if("def"==t[0])return e[t[1]]=n(t[2],e);if("let"==t[0]){e=Object.create(e);for(let i in t[1])i%2&&(e[t[1][i-1]]=n(t[1][i],e));t=t[2]}else if("do"==t[0]){let n=i(t.slice(1,t.length-1),e);t=t[t.length-1]}else if("if"==t[0])t=n(t[1],e)?t[2]:t[3];else{if("fn"==t[0]){let f=function(...f){return n(t[2],i(t[1],e,f))};return f.A=[t[2],e,t[1]],f}{let n=i(t,e),f=n[0];if(!f.A)return f(...n.slice(1));t=f.A[0],e=i(f.A[2],f.A[1],n.slice(1))}}}}let i=function(i,t,e){return e?(t=Object.create(t),i.some((n,f)=>"&"==n?t[i[f+1]]=e.slice(f):(t[n]=e[f],0)),t):i instanceof Array?i.map((...i)=>n(i[0],t)):typeof ""==typeof i?i in t?t[i]:null[i]:i},t=Object.assign(this,{"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],list:(...n)=>n,map:(...n)=>n[1].map(i=>n[0](i)),read:(...n)=>JSON.parse(n[0]),ARGS:process.argv.slice(3)});require("repl").start({eval:(...i)=>i[3](0,n(JSON.parse(i[0]),t)),writer:JSON.stringify,terminal:0})}() |
+13
-9
@@ -5,2 +5,4 @@ // miniMAL | ||
| !function() { | ||
| // 2 args: eval_ast, 3 args: env_bind | ||
@@ -13,3 +15,3 @@ let eval_ast_or_bind = function(ast, env, exprs) { | ||
| ast.some((a,i) => a == "&" ? env[ast[i+1]] = exprs.slice(i) | ||
| : (env[a] = exprs[i], false) ) | ||
| : (env[a] = exprs[i], 0)) | ||
| return env | ||
@@ -52,3 +54,3 @@ } | ||
| } | ||
| f.ast = [ast[2], env, ast[1]] // f.ast compresses more than f.data | ||
| f.A = [ast[2], env, ast[1]] // f.A compresses more than f.data | ||
| return f | ||
@@ -58,5 +60,5 @@ } else { // invoke list form | ||
| f = el[0] | ||
| if (f.ast) { | ||
| ast = f.ast[0] | ||
| env = eval_ast_or_bind(f.ast[2], f.ast[1], el.slice(1)) // TCO | ||
| if (f.A) { | ||
| ast = f.A[0] | ||
| env = eval_ast_or_bind(f.A[2], f.A[1], el.slice(1)) // TCO | ||
| } else { | ||
@@ -69,3 +71,3 @@ return f(...el.slice(1)) | ||
| E = Object.assign(Object.create(global), { | ||
| let E = Object.assign(this, { | ||
| "=": (...a) => a[0]===a[1], | ||
@@ -87,4 +89,6 @@ "<": (...a) => a[0]<a[1], | ||
| require("repl").start({ | ||
| eval: (...a) => a[3](!1,JSON.stringify(EVAL(JSON.parse(a[0]),E))), | ||
| writer: (...a) => a[0], | ||
| terminal: false}) | ||
| eval: (...a) => a[3](0,EVAL(JSON.parse(a[0]),E)), | ||
| writer: JSON.stringify, | ||
| terminal: 0}) | ||
| }() |
@@ -1,1 +0,1 @@ | ||
| for(_='[0]~n~Z(tY=nYX;t=W[e]V"==Uif(T)=>I(...H:HnIEEZD"DCreBslurpJSON.))e(let {n=tstringe in tevalelseObject.),Bquir"t.length-1[1]n,"[2],r)T"functioni.ast HeIn(e~, instanceof Arraypars.slicprocess.argvcBatUt~)Bturn nY{for(;;){T!Yt;defr[t]X;let{r=r);for()e%2&&(r[t[e-1]]XV)Wt}{`t;do1,)Wt[]} iftX?t:t[3];{fn{i=Hi){nY,t,r,i}; =[t,r,t],i},i=Z;T! )iHn1W ~,r= , ,n1}}}}}e=(e,t{r?Y=te.som(n,iI"&Un?t[e[i+1]]=ri):Y[n]=r[i],!1)t):e?e.map(t:"Utypeof e??tV:nullV:e};A=assign(global{:A"=C===<C<+C+-C-*C*/C/n,BadEZEfs").BadFileSync(Z,"utf8"loadEA.(A.(ZARGS:3)}?A.load():Bpl").start({:HeIe[3](!1,ify(n(e~AwriterD,terminal:!1})';g=/[^ -AFGJ-S[-}]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_=',tZ,iY(iX=nXW;i=V[e]U"==Tif(Me(L.slicLKnK1))I)=>H(...EEeHn(DJSON.CreBlet {n=Li{eval:e in i:EnH)Y)elsetypeof t.A=Object.[0],"utf8")BquiB("i.length-1[1]n,"[2],r)M"DeY)cBatL instanceof ArrayfunctionCparsLprocess.argvTi)fs").BadFileSync(Bturn "n!(){ nX{for(;;){M!X))Li;defr[i]W;let{r r);for()e%2&&(r[i[e-1]]WU)Vi}{`i;doK1,)Vi[]} ifiW?i:i[3];{fn{t=Et){nX,Li,rZ))};=[i,rY]Z}Z=n;M!)tEIV,r=L,,I}}}}}e=(eY{r?X i),e.somL(nZH"&Tn?i[e[t+1]]=rKt):X[n]=r[t],0):e?e.map():"Te??iU:nullU:e}Yassign(this,,"====<<++--**//n,Badn),slurpn,load:De,ARGS:K3)});?i.load():Bpl").start(EeHe[3](0,n(e),writer:CstringifyZerminal:0})}()';g=/[^ -AFGJN-S[-}]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| function n(t,r){for(;;){if(!(t instanceof Array))return e(t,r);if("def"==t[0])return r[t[1]]=n(t[2],r);if("let"==t[0]){r=Object.create(r);for(let e in t[1])e%2&&(r[t[1][e-1]]=n(t[1][e],r));t=t[2]}else{if("`"==t[0])return t[1];if("do"==t[0]){let n=e(t.slice(1,t.length-1),r);t=t[t.length-1]}else if("if"==t[0])t=n(t[1],r)?t[2]:t[3];else{if("fn"==t[0]){let i=function(...i){return n(t[2],e(t[1],r,i))};return i.ast=[t[2],r,t[1]],i}{let n=e(t,r),i=n[0];if(!i.ast)return i(...n.slice(1));t=i.ast[0],r=e(i.ast[2],i.ast[1],n.slice(1))}}}}}let e=function(e,t,r){return r?(t=Object.create(t),e.some((n,i)=>"&"==n?t[e[i+1]]=r.slice(i):(t[n]=r[i],!1)),t):e instanceof Array?e.map((...e)=>n(e[0],t)):"string"==typeof e?e in t?t[e]:null[e]:e};E=Object.assign(Object.create(global),{eval:(...e)=>n(e[0],E),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...n)=>E.eval(JSON.parse(E.slurp(n[0]))),ARGS:process.argv.slice(3)}),process.argv[2]?E.load(process.argv[2]):require("repl").start({eval:(...e)=>e[3](!1,JSON.stringify(n(JSON.parse(e[0]),E))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(i,r){for(;;){if(!(i instanceof Array))return e(i,r);if("def"==i[0])return r[i[1]]=n(i[2],r);if("let"==i[0]){r=Object.create(r);for(let e in i[1])e%2&&(r[i[1][e-1]]=n(i[1][e],r));i=i[2]}else{if("`"==i[0])return i[1];if("do"==i[0]){let n=e(i.slice(1,i.length-1),r);i=i[i.length-1]}else if("if"==i[0])i=n(i[1],r)?i[2]:i[3];else{if("fn"==i[0]){let t=function(...t){return n(i[2],e(i[1],r,t))};return t.A=[i[2],r,i[1]],t}{let n=e(i,r),t=n[0];if(!t.A)return t(...n.slice(1));i=t.A[0],r=e(t.A[2],t.A[1],n.slice(1))}}}}}let e=function(e,i,r){return r?(i=Object.create(i),e.some((n,t)=>"&"==n?i[e[t+1]]=r.slice(t):(i[n]=r[t],0)),i):e instanceof Array?e.map((...e)=>n(e[0],i)):typeof ""==typeof e?e in i?i[e]:null[e]:e},i=Object.assign(this,{eval:(...e)=>n(e[0],i),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...e)=>n(JSON.parse(require("fs").readFileSync(e[0],"utf8")),i),ARGS:process.argv.slice(3)});process.argv[2]?i.load(process.argv[2]):require("repl").start({eval:(...e)=>e[3](0,n(JSON.parse(e[0]),i)),writer:JSON.stringify,terminal:0})}() |
+14
-10
@@ -5,2 +5,4 @@ // miniMAL | ||
| !function() { | ||
| // 2 args: eval_ast, 3 args: env_bind | ||
@@ -13,3 +15,3 @@ let eval_ast_or_bind = function(ast, env, exprs) { | ||
| ast.some((a,i) => a == "&" ? env[ast[i+1]] = exprs.slice(i) | ||
| : (env[a] = exprs[i], false) ) | ||
| : (env[a] = exprs[i], 0)) | ||
| return env | ||
@@ -54,3 +56,3 @@ } | ||
| } | ||
| f.ast = [ast[2], env, ast[1]] // f.ast compresses more than f.data | ||
| f.A = [ast[2], env, ast[1]] // f.A compresses more than f.data | ||
| return f | ||
@@ -60,5 +62,5 @@ } else { // invoke list form | ||
| f = el[0] | ||
| if (f.ast) { | ||
| ast = f.ast[0] | ||
| env = eval_ast_or_bind(f.ast[2], f.ast[1], el.slice(1)) // TCO | ||
| if (f.A) { | ||
| ast = f.A[0] | ||
| env = eval_ast_or_bind(f.A[2], f.A[1], el.slice(1)) // TCO | ||
| } else { | ||
@@ -71,3 +73,3 @@ return f(...el.slice(1)) | ||
| E = Object.assign(Object.create(global), { | ||
| let E = Object.assign(this, { | ||
| "eval": (...a) => EVAL(a[0], E), | ||
@@ -87,3 +89,3 @@ | ||
| "slurp": (...a) => require("fs").readFileSync(a[0],"utf8"), | ||
| "load": (...a) => E.eval(JSON.parse(E.slurp(a[0]))), | ||
| "load": (...a) => EVAL(JSON.parse(require("fs").readFileSync(a[0],"utf8")),E), | ||
@@ -98,5 +100,7 @@ "ARGS": process.argv.slice(3) | ||
| require("repl").start({ | ||
| eval: (...a) => a[3](!1,JSON.stringify(EVAL(JSON.parse(a[0]),E))), | ||
| writer: (...a) => a[0], | ||
| terminal: false}) | ||
| eval: (...a) => a[3](0,EVAL(JSON.parse(a[0]),E)), | ||
| writer: JSON.stringify, | ||
| terminal: 0}) | ||
| } | ||
| }() |
@@ -1,1 +0,1 @@ | ||
| for(_=',r~[1]ZnZ,Y(tX=nXW;t=V[e]U"==Tif(MreLinK[0]In(eI,HstrKgEe K tDslurpCJSON.B)=>7eval6else5e(4),Kstanceof Arraytypeof Object.nI[nZ](...:n7"let))Lquir4"6:e7t.length-1Y"[2],i)functionr.ast{ n=4t M"Bpars4process.argvcLat4TtI).slic4Lturn 1)~=; nX{for(;;){M!X4t;defi[tZ]W;{i=i);for( DZ)e%2&&(i[tZ[e-1]]WZU)Vt}5{`tZ;.-2 K n?=n:r}.r.apply(,n2}do 1,)Vt[]}5 iftWZ?t:t[3];5{fn{ r=r){nX,4tZ,i~};=[t,i,tZ]~} ~=;M!)rn1VI,i=4,Z,n1}}}}} e=(e,t{i?X=te.som4(n~7"&Tn?t[e[r+1]]=ir):X[n]=i[r],!1,t):e?e.map(e7Ht:"ETe?D?tU:nullU:e};A=assign(global{js:6,HA"====<<++--**//YisaYtype,newnew(.bKdn,deldee ,LadCfs").LadFileSync(,"utf8"loadA.6(A.C(ARGS:3)}?A.load():Lpl").start({e[3](!1,BEify(n(eIAwriter,termKal:!1})';g=/[^ -38-AFGJN-S[-}]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='[1]~n~Z,tYe(X;i=W[e]Vif(U)=>T(...Q:QnTP[0]MPnML"LK=nIQeTn(HJSON.EreD,r)CCYIMBevalelse in )),iinstanceof Arraytypeof t.A=Object.let (iM,"utf8")DquiD("i.length-1Z,"HeM)[2]cDatX{n=eU" functionEparsXprocess.argvfs").DadFileSync(.slicXDturn "==iM)1)B[Z];!(){ nC{for(;;){U!eC; defr[i~]IC; let{rr);for(ei~)e%2&&(r[i~[e-1]]I~V,rWi}{ `i~; .-2n?nM[Z]I:t} .t.apply(nM,n2} do1,)CWi[]} ifiI~C?i:i[3];{ fn{t=Qt){n,e~,rY};=[i,r~]Y}B;U!)tQn1WM,r=X,~,n1}}}}}e=(eC{r?i),e.somX(nYT"&"=I?i[e[t+1]]=rt):[n]=r[t],0):e?e.map():""==e?ei?iV:nullV:e}assign(this,{js:,:,"=K===<K<+K+-K-*K*/K/ZsaLZ,DadPnM),slurpPn,load:He)),ARGS:3)});?i.load():Dpl").start({:QeTe[3](0,n(eM),writer:EstringifyYerminal:0})}()';g=/[^ -AFGJNORS[-}]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| function n(t,i){for(;;){if(!(t instanceof Array))return e(t,i);if("def"==t[0])return i[t[1]]=n(t[2],i);if("let"==t[0]){i=Object.create(i);for(let e in t[1])e%2&&(i[t[1][e-1]]=n(t[1][e],i));t=t[2]}else{if("`"==t[0])return t[1];if(".-"==t[0]){let n=e(t.slice(1),i),r=n[0][n[1]];return 2 in n?n[0][n[1]]=n[2]:r}if("."==t[0]){let n=e(t.slice(1),i),r=n[0][n[1]];return r.apply(n[0],n.slice(2))}if("do"==t[0]){let n=e(t.slice(1,t.length-1),i);t=t[t.length-1]}else if("if"==t[0])t=n(t[1],i)?t[2]:t[3];else{if("fn"==t[0]){let r=function(...r){return n(t[2],e(t[1],i,r))};return r.ast=[t[2],i,t[1]],r}{let n=e(t,i),r=n[0];if(!r.ast)return r(...n.slice(1));t=r.ast[0],i=e(r.ast[2],r.ast[1],n.slice(1))}}}}}let e=function(e,t,i){return i?(t=Object.create(t),e.some((n,r)=>"&"==n?t[e[r+1]]=i.slice(r):(t[n]=i[r],!1)),t):e instanceof Array?e.map((...e)=>n(e[0],t)):"string"==typeof e?e in t?t[e]:null[e]:e};E=Object.assign(Object.create(global),{js:eval,eval:(...e)=>n(e[0],E),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],type:(...n)=>typeof n[0],new:(...n)=>new(n[0].bind(...n)),del:(...n)=>delete n[0][n[1]],read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...n)=>E.eval(JSON.parse(E.slurp(n[0]))),ARGS:process.argv.slice(3)}),process.argv[2]?E.load(process.argv[2]):require("repl").start({eval:(...e)=>e[3](!1,JSON.stringify(n(JSON.parse(e[0]),E))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(i,r){for(;;){if(!(i instanceof Array))return e(i,r);if("def"==i[0])return r[i[1]]=n(i[2],r);if("let"==i[0]){r=Object.create(r);for(let e in i[1])e%2&&(r[i[1][e-1]]=n(i[1][e],r));i=i[2]}else{if("`"==i[0])return i[1];if(".-"==i[0]){let n=e(i.slice(1),r),t=n[0][n[1]];return 2 in n?n[0][n[1]]=n[2]:t}if("."==i[0]){let n=e(i.slice(1),r),t=n[0][n[1]];return t.apply(n[0],n.slice(2))}if("do"==i[0]){let n=e(i.slice(1,i.length-1),r);i=i[i.length-1]}else if("if"==i[0])i=n(i[1],r)?i[2]:i[3];else{if("fn"==i[0]){let t=function(...t){return n(i[2],e(i[1],r,t))};return t.A=[i[2],r,i[1]],t}{let n=e(i,r),t=n[0];if(!t.A)return t(...n.slice(1));i=t.A[0],r=e(t.A[2],t.A[1],n.slice(1))}}}}}let e=function(e,i,r){return r?(i=Object.create(i),e.some((n,t)=>"&"==n?i[e[t+1]]=r.slice(t):(i[n]=r[t],0)),i):e instanceof Array?e.map((...e)=>n(e[0],i)):typeof ""==typeof e?e in i?i[e]:null[e]:e},i=Object.assign(this,{js:eval,eval:(...e)=>n(e[0],i),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...e)=>n(JSON.parse(require("fs").readFileSync(e[0],"utf8")),i),ARGS:process.argv.slice(3)});process.argv[2]?i.load(process.argv[2]):require("repl").start({eval:(...e)=>e[3](0,n(JSON.parse(e[0]),i)),writer:JSON.stringify,terminal:0})}() |
+18
-13
@@ -5,2 +5,4 @@ // miniMAL | ||
| !function() { | ||
| // 2 args: eval_ast, 3 args: env_bind | ||
@@ -13,3 +15,3 @@ let eval_ast_or_bind = function(ast, env, exprs) { | ||
| ast.some((a,i) => a == "&" ? env[ast[i+1]] = exprs.slice(i) | ||
| : (env[a] = exprs[i], false) ) | ||
| : (env[a] = exprs[i], 0)) | ||
| return env | ||
@@ -62,3 +64,3 @@ } | ||
| } | ||
| f.ast = [ast[2], env, ast[1]] // f.ast compresses more than f.data | ||
| f.A = [ast[2], env, ast[1]] // f.A compresses more than f.data | ||
| return f | ||
@@ -68,5 +70,5 @@ } else { // invoke list form | ||
| f = el[0] | ||
| if (f.ast) { | ||
| ast = f.ast[0] | ||
| env = eval_ast_or_bind(f.ast[2], f.ast[1], el.slice(1)) // TCO | ||
| if (f.A) { | ||
| ast = f.A[0] | ||
| env = eval_ast_or_bind(f.A[2], f.A[1], el.slice(1)) // TCO | ||
| } else { | ||
@@ -79,3 +81,3 @@ return f(...el.slice(1)) | ||
| E = Object.assign(Object.create(global), { | ||
| let E = Object.assign(this, { | ||
| "js": eval, | ||
@@ -92,5 +94,6 @@ "eval": (...a) => EVAL(a[0], E), | ||
| "isa": (...a) => a[0] instanceof a[1], | ||
| "type": (...a) => typeof a[0], | ||
| "new": (...a) => new (a[0].bind(...a)), | ||
| "del": (...a) => delete a[0][a[1]], | ||
| // new can use Reflect.construct | ||
| //"new": (...a) => new (a[0].bind(...a)), | ||
| // delete can use Reflect.deleteProperty | ||
| //"del": (...a) => delete a[0][a[1]], | ||
| //"list": (...a) => a, | ||
@@ -101,3 +104,3 @@ //"map": (...a) => a[1].map(x => a[0](x)), | ||
| "slurp": (...a) => require("fs").readFileSync(a[0],"utf8"), | ||
| "load": (...a) => E.eval(JSON.parse(E.slurp(a[0]))), | ||
| "load": (...a) => EVAL(JSON.parse(require("fs").readFileSync(a[0],"utf8")),E), | ||
@@ -112,5 +115,7 @@ "ARGS": process.argv.slice(3) | ||
| require("repl").start({ | ||
| eval: (...a) => a[3](!1,JSON.stringify(EVAL(JSON.parse(a[0]),E))), | ||
| writer: (...a) => a[0], | ||
| terminal: false}) | ||
| eval: (...a) => a[3](0,EVAL(JSON.parse(a[0]),E)), | ||
| writer: JSON.stringify, | ||
| terminal: 0}) | ||
| } | ||
| }() |
@@ -1,1 +0,1 @@ | ||
| for(_='[2]9i9@i=$[n#stI[1]HnH,LinK K Q"==P[0]Et(iD,nCletBe(7{B n=6.slic75PiE)446D51Z))Y(...nXX51Y;WIrKgVslurpUJSON.T#]:nreif(KIanceof Arrayturn !(iYelsefor(iHtypeof Object.nE#H]qui("eval),:X)=>"i.length-1L" e.aI,r)functionTpars7"process.argvcat7Z),e=; n(n,e){;n&&K e&&e[]._M;)n=e[]Wn} 7i{;;){D;$n(i,i;def4r[]=7@;~467;n._M=1C}B4{r=r);B nQ)n%2&&(r[#-1]]=7#]);$@}{`4;.-2Qn?=n9:e}.e.apply(C52Y}doZ,);$i[]} if4$7?@:i[3];{fn46X){7@,t(,rCY};n.aI=[@,r,]C}6D,e=;!)eW$E,r=t(9,HC51Y}}}}}B t=(n,t,i){i?(t=tn.som7(e=>"&Pe?t#[r+1]]=i5r):(t[e]=i[r],!1)t):n?n.map(X)=>7,tY:"VPn?nQt?tull};A=assign(global{js:,7,A"==== << ++ -- ** //LisaLtypeCewnew(.bKdX)deldeBe ,adUfs").adFileSync(,"utf8"loadA.(A.U(YARGS:53)}9?A.load(9):pl").Iart({n[3](!1,TVify(7AYwriter,termKal:!1})';g=/[-T-Z4-7B-EPQKLHI#$@9]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='[2]QrQP,n$]=#r=I,tHin_){^[1]LnL,K"==Ei(rD))Clet B[0]7e(6{Bn=5.slic64Er7)ZZ5D41Y(...nXX41C;W),VH)Un7TU,e=TJSON.ree.Aif(_stanceof Arrayturn !(rCevalelse _ for([nrLtypeof qui("=Object.:X)=>"Tr.length-1 K"cat6pars6"process.argvfunctionfs").adFileSync(T,"utf8")Y)L];!(^ n(n,e^;n&&T_ e&&e7].M;)n=e7]Wn} 6rU{;;^DU;In(rU,r;defZt[#6PU;~Z56U;n.M=1$}letZ{tt);Bn)n%2&&(t[-1]#6]U);IP}{`Z;.-2n?TL#nQ:e}.e.apply(T$42C}doY, )U;Ir[ ]} ifZI6U?P:r[3];{fnZ5X^6P,i(H$C};n.A=[PH,]$}5D;!)eWI7H=i(Q,L$41C}}}}}Bi=(n,i,r^r?(iiVn.som6(eU=>"&Ee?i[t+1]#r4t):(i[e#r[t],0)Vi):n?n.map(X)=>6T,iC:"En?ni?i]:null]:n},rassign(this,{js:,6T,rV"====<<++--**//KisaTKadTVslurp,load6VrVARGS:43)});Q?r.load(Q):pl").start({n[3](0,6TVr)Vwriter:str_gifyHerm_al:0})}()';g=/[-T-Z4-7B-EKL^_HI#$PQ]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| function n(n,e){for(;n instanceof Array&&n[0]in e&&e[n[0]]._M;)n=e[n[0]](...n.slice(1));return n}function e(i,r){for(;;){if(!(i instanceof Array))return t(i,r);if(i=n(i,r),!(i instanceof Array))return i;if("def"==i[0])return r[i[1]]=e(i[2],r);if("~"==i[0]){let n=e(i[1],r);return n._M=1,n}if("let"==i[0]){r=Object.create(r);for(let n in i[1])n%2&&(r[i[1][n-1]]=e(i[1][n],r));i=i[2]}else{if("`"==i[0])return i[1];if(".-"==i[0]){let n=t(i.slice(1),r),e=n[0][n[1]];return 2 in n?n[0][n[1]]=n[2]:e}if("."==i[0]){let n=t(i.slice(1),r),e=n[0][n[1]];return e.apply(n[0],n.slice(2))}if("do"==i[0]){let n=t(i.slice(1,i.length-1),r);i=i[i.length-1]}else if("if"==i[0])i=e(i[1],r)?i[2]:i[3];else{if("fn"==i[0]){let n=function(...n){return e(i[2],t(i[1],r,n))};return n.ast=[i[2],r,i[1]],n}{let n=t(i,r),e=n[0];if(!e.ast)return e(...n.slice(1));i=e.ast[0],r=t(e.ast[2],e.ast[1],n.slice(1))}}}}}let t=function(n,t,i){return i?(t=Object.create(t),n.some((e,r)=>"&"==e?t[n[r+1]]=i.slice(r):(t[e]=i[r],!1)),t):n instanceof Array?n.map((...n)=>e(n[0],t)):"string"==typeof n?n in t?t[n]:null[n]:n};E=Object.assign(Object.create(global),{js:eval,eval:(...n)=>e(n[0],E),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],type:(...n)=>typeof n[0],new:(...n)=>new(n[0].bind(...n)),del:(...n)=>delete n[0][n[1]],read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...n)=>E.eval(JSON.parse(E.slurp(n[0]))),ARGS:process.argv.slice(3)}),process.argv[2]?E.load(process.argv[2]):require("repl").start({eval:(...n)=>n[3](!1,JSON.stringify(e(JSON.parse(n[0]),E))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(n,e){for(;n instanceof Array&&n[0]in e&&e[n[0]].M;)n=e[n[0]](...n.slice(1));return n}function e(r,t){for(;;){if(!(r instanceof Array))return i(r,t);if(r=n(r,t),!(r instanceof Array))return r;if("def"==r[0])return t[r[1]]=e(r[2],t);if("~"==r[0]){let n=e(r[1],t);return n.M=1,n}if("let"==r[0]){t=Object.create(t);for(let n in r[1])n%2&&(t[r[1][n-1]]=e(r[1][n],t));r=r[2]}else{if("`"==r[0])return r[1];if(".-"==r[0]){let n=i(r.slice(1),t),e=n[0][n[1]];return 2 in n?n[0][n[1]]=n[2]:e}if("."==r[0]){let n=i(r.slice(1),t),e=n[0][n[1]];return e.apply(n[0],n.slice(2))}if("do"==r[0]){let n=i(r.slice(1,r.length-1),t);r=r[r.length-1]}else if("if"==r[0])r=e(r[1],t)?r[2]:r[3];else{if("fn"==r[0]){let n=function(...n){return e(r[2],i(r[1],t,n))};return n.A=[r[2],t,r[1]],n}{let n=i(r,t),e=n[0];if(!e.A)return e(...n.slice(1));r=e.A[0],t=i(e.A[2],e.A[1],n.slice(1))}}}}}let i=function(n,i,r){return r?(i=Object.create(i),n.some((e,t)=>"&"==e?i[n[t+1]]=r.slice(t):(i[e]=r[t],0)),i):n instanceof Array?n.map((...n)=>e(n[0],i)):typeof ""==typeof n?n in i?i[n]:null[n]:n},r=Object.assign(this,{js:eval,eval:(...n)=>e(n[0],r),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...n)=>e(JSON.parse(require("fs").readFileSync(n[0],"utf8")),r),ARGS:process.argv.slice(3)});process.argv[2]?r.load(process.argv[2]):require("repl").start({eval:(...n)=>n[3](0,e(JSON.parse(n[0]),r)),writer:JSON.stringify,terminal:0})}() |
+20
-15
@@ -5,2 +5,4 @@ // miniMAL | ||
| !function() { | ||
| // 2 args: eval_ast, 3 args: env_bind | ||
@@ -13,3 +15,3 @@ let eval_ast_or_bind = function(ast, env, exprs) { | ||
| ast.some((a,i) => a == "&" ? env[ast[i+1]] = exprs.slice(i) | ||
| : (env[a] = exprs[i], false) ) | ||
| : (env[a] = exprs[i], 0)) | ||
| return env | ||
@@ -30,3 +32,3 @@ } | ||
| && ast[0] in env | ||
| && env[ast[0]]._M) { | ||
| && env[ast[0]].M) { | ||
| ast = env[ast[0]](...ast.slice(1)) | ||
@@ -50,3 +52,3 @@ } | ||
| let f = EVAL(ast[1], env) // eval regular function | ||
| f._M = 1 // mark as macro | ||
| f.M = 1 // mark as macro | ||
| return f | ||
@@ -80,3 +82,3 @@ } else if (ast[0] == "let") { // new environment with bindings | ||
| } | ||
| f.ast = [ast[2], env, ast[1]] // f.ast compresses more than f.data | ||
| f.A = [ast[2], env, ast[1]] // f.A compresses more than f.data | ||
| return f | ||
@@ -86,5 +88,5 @@ } else { // invoke list form | ||
| f = el[0] | ||
| if (f.ast) { | ||
| ast = f.ast[0] | ||
| env = eval_ast_or_bind(f.ast[2], f.ast[1], el.slice(1)) // TCO | ||
| if (f.A) { | ||
| ast = f.A[0] | ||
| env = eval_ast_or_bind(f.A[2], f.A[1], el.slice(1)) // TCO | ||
| } else { | ||
@@ -97,3 +99,3 @@ return f(...el.slice(1)) | ||
| E = Object.assign(Object.create(global), { | ||
| let E = Object.assign(this, { | ||
| "js": eval, | ||
@@ -110,5 +112,6 @@ "eval": (...a) => EVAL(a[0], E), | ||
| "isa": (...a) => a[0] instanceof a[1], | ||
| "type": (...a) => typeof a[0], | ||
| "new": (...a) => new (a[0].bind(...a)), | ||
| "del": (...a) => delete a[0][a[1]], | ||
| // new can use Reflect.construct | ||
| //"new": (...a) => new (a[0].bind(...a)), | ||
| // delete can use Reflect.deleteProperty | ||
| //"del": (...a) => delete a[0][a[1]], | ||
| //"list": (...a) => a, | ||
@@ -119,3 +122,3 @@ //"map": (...a) => a[1].map(x => a[0](x)), | ||
| "slurp": (...a) => require("fs").readFileSync(a[0],"utf8"), | ||
| "load": (...a) => E.eval(JSON.parse(E.slurp(a[0]))), | ||
| "load": (...a) => EVAL(JSON.parse(require("fs").readFileSync(a[0],"utf8")),E), | ||
@@ -130,5 +133,7 @@ "ARGS": process.argv.slice(3) | ||
| require("repl").start({ | ||
| eval: (...a) => a[3](!1,JSON.stringify(EVAL(JSON.parse(a[0]),E))), | ||
| writer: (...a) => a[0], | ||
| terminal: false}) | ||
| eval: (...a) => a[3](0,EVAL(JSON.parse(a[0]),E)), | ||
| writer: JSON.stringify, | ||
| terminal: 0}) | ||
| } | ||
| }() |
@@ -1,1 +0,1 @@ | ||
| for(_=',txr=kst^[1]9r9@,i$$)#e(II@#HinL L K"==Q[0]P[2]ErED,nC[nB))7(...n6.slicI56517;4^rLgZslurpYJSON.XreWt(Vif(UL^anceof T TArrayWturn !(r7){IDfor(let{ n=QrP)Vr51typeof Object.nPB9]throwWquiW("evalelse:6)=>"r.length-1n9," e.a^),functionXparsIprocess.argvU"cWatIie=; n(n,e){;n&&L e&&e[]._M;)n=e[]4n} Ir#{;;){UVr#;Ukn(r$r;defi[@]=ID#;~H;n._M=1C}{i=i); nK@)n%2&&(i[@B-1]]=I@B]$7;kD}{`@;.-2Kn?=nE:e}.e.apply(C527}trytry{H}catch(nE,V[D9]$,B]7} do,i);kr[]} ifkH?D:r[3];{fn6,V@$C7};n.a^=[D$,@]C}Vr$e=;U!)e4kP$=VE,9C517}}}}} t=(nx,r){r?(t=tn.somI(e#=>"&Qe?tB[i+1]]=r5i):(t[e]=r[i],!1)t):n?n.map(6)=>Ix7:"ZQn?nKt?tB]:A.(n+" not found"):n};A=assign(global{js:,I,A"==== << ++ -- ** //n9$saTn9xypeCewnew(.bLd6)deldee ,{ },WadYfs").WadFileSync(,"utf8"loadA.(A.Y(7ARGS:53)}E?A.load(E):Wpl").^arV{n[3](!1,XZify(IA7writerxermLal:!1})';g=/[-T-Z4-7B-EPQKLHI#$@9^kx]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_=',nx]=kin9))@e(Q.slicQPP1@$,t#[1]IiIH#)_QH_^reLLturn K;KnEnI,D)=>C;i=B"==7[2]6i65[0]4),Zn4Y#Ze=YXr(W{foW;VJSON.Ue.ATif(9stanceof Array!(i@Klet {n=7i4)WiP1){KQ5eval 9 [ntypeof throwLquiL("=Object.else(...n:C"Yi.length-1 D"cLatQUparsQprocess.argv"function)XI];Kfs").LadFileSync(Y,"utf8")!(){ n(n,e)Vn&&Y9 e&&e4].M;)n=e4]$E} Qi_V;){Wi_;i=n(i#Zi;defKt[HkQ5_;~^E.M=1x}let{tt);foWnH)n%2&&(t[H-1]kQH]_)B5}{`KH;.-2n?YIkn6:e}.e.apply(YxP2@}trytry{K^}catch(n6,W[5I]#,]@} do, Zt)Bi[ ]} ifi=^?5:i[3];{fn,WH#x@}E.A=[5#,H]x}WiX;!T)Ke$BT4#=WT6,TIx$}}}}}r=(n,r_{Kt?(rrZn.somQ(e,iC"&7e?r[i+1]ktPi):(r[ekt[i],0)Zr):n?n.map(CQY,r@:"7n?nr?r]:i.(n+" not found"):n},iassign(this,{js:,QY,iZ"====<<++--**//DisaYD{ Y},LadYZslurp,loadQZiZARGS:P3)});6?i.load(6):Lpl").start({n[3](0,QYZi)Zwriter:Ustr9gify#erm9al:0})}()';g=/[-T-Z4-7B-EKL^_HI#$PQ@9kx]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| function n(n,e){for(;n instanceof Array&&n[0]in e&&e[n[0]]._M;)n=e[n[0]](...n.slice(1));return n}function e(r,i){for(;;){if(!(r instanceof Array))return t(r,i);if(r=n(r,i),!(r instanceof Array))return r;if("def"==r[0])return i[r[1]]=e(r[2],i);if("~"==r[0]){let n=e(r[1],i);return n._M=1,n}if("let"==r[0]){i=Object.create(i);for(let n in r[1])n%2&&(i[r[1][n-1]]=e(r[1][n],i));r=r[2]}else{if("`"==r[0])return r[1];if(".-"==r[0]){let n=t(r.slice(1),i),e=n[0][n[1]];return 2 in n?n[0][n[1]]=n[2]:e}if("."==r[0]){let n=t(r.slice(1),i),e=n[0][n[1]];return e.apply(n[0],n.slice(2))}if("try"==r[0])try{return e(r[1],i)}catch(n){return e(r[2][2],t([r[2][1]],i,[n]))}else if("do"==r[0]){let n=t(r.slice(1,r.length-1),i);r=r[r.length-1]}else if("if"==r[0])r=e(r[1],i)?r[2]:r[3];else{if("fn"==r[0]){let n=function(...n){return e(r[2],t(r[1],i,n))};return n.ast=[r[2],i,r[1]],n}{let n=t(r,i),e=n[0];if(!e.ast)return e(...n.slice(1));r=e.ast[0],i=t(e.ast[2],e.ast[1],n.slice(1))}}}}}let t=function(n,t,r){return r?(t=Object.create(t),n.some((e,i)=>"&"==e?t[n[i+1]]=r.slice(i):(t[e]=r[i],!1)),t):n instanceof Array?n.map((...n)=>e(n[0],t)):"string"==typeof n?n in t?t[n]:E.throw(n+" not found"):n};E=Object.assign(Object.create(global),{js:eval,eval:(...n)=>e(n[0],E),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],type:(...n)=>typeof n[0],new:(...n)=>new(n[0].bind(...n)),del:(...n)=>delete n[0][n[1]],throw:(...n)=>{throw n[0]},read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...n)=>E.eval(JSON.parse(E.slurp(n[0]))),ARGS:process.argv.slice(3)}),process.argv[2]?E.load(process.argv[2]):require("repl").start({eval:(...n)=>n[3](!1,JSON.stringify(e(JSON.parse(n[0]),E))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(n,e){for(;n instanceof Array&&n[0]in e&&e[n[0]].M;)n=e[n[0]](...n.slice(1));return n}function e(i,t){for(;;){if(!(i instanceof Array))return r(i,t);if(i=n(i,t),!(i instanceof Array))return i;if("def"==i[0])return t[i[1]]=e(i[2],t);if("~"==i[0]){let n=e(i[1],t);return n.M=1,n}if("let"==i[0]){t=Object.create(t);for(let n in i[1])n%2&&(t[i[1][n-1]]=e(i[1][n],t));i=i[2]}else{if("`"==i[0])return i[1];if(".-"==i[0]){let n=r(i.slice(1),t),e=n[0][n[1]];return 2 in n?n[0][n[1]]=n[2]:e}if("."==i[0]){let n=r(i.slice(1),t),e=n[0][n[1]];return e.apply(n[0],n.slice(2))}if("try"==i[0])try{return e(i[1],t)}catch(n){return e(i[2][2],r([i[2][1]],t,[n]))}else if("do"==i[0]){let n=r(i.slice(1,i.length-1),t);i=i[i.length-1]}else if("if"==i[0])i=e(i[1],t)?i[2]:i[3];else{if("fn"==i[0]){let n=function(...n){return e(i[2],r(i[1],t,n))};return n.A=[i[2],t,i[1]],n}{let n=r(i,t),e=n[0];if(!e.A)return e(...n.slice(1));i=e.A[0],t=r(e.A[2],e.A[1],n.slice(1))}}}}}let r=function(n,r,t){return t?(r=Object.create(r),n.some((e,i)=>"&"==e?r[n[i+1]]=t.slice(i):(r[e]=t[i],0)),r):n instanceof Array?n.map((...n)=>e(n[0],r)):typeof ""==typeof n?n in r?r[n]:i.throw(n+" not found"):n},i=Object.assign(this,{js:eval,eval:(...n)=>e(n[0],i),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],throw:(...n)=>{throw n[0]},read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...n)=>e(JSON.parse(require("fs").readFileSync(n[0],"utf8")),i),ARGS:process.argv.slice(3)});process.argv[2]?i.load(process.argv[2]):require("repl").start({eval:(...n)=>n[3](0,e(JSON.parse(n[0]),i)),writer:JSON.stringify,terminal:0})}() |
+20
-15
@@ -5,2 +5,4 @@ // miniMAL | ||
| !function() { | ||
| // 2 args: eval_ast, 3 args: env_bind | ||
@@ -13,3 +15,3 @@ let eval_ast_or_bind = function(ast, env, exprs) { | ||
| ast.some((a,i) => a == "&" ? env[ast[i+1]] = exprs.slice(i) | ||
| : (env[a] = exprs[i], false) ) | ||
| : (env[a] = exprs[i], 0)) | ||
| return env | ||
@@ -31,3 +33,3 @@ } | ||
| && ast[0] in env | ||
| && env[ast[0]]._M) { | ||
| && env[ast[0]].M) { | ||
| ast = env[ast[0]](...ast.slice(1)) | ||
@@ -51,3 +53,3 @@ } | ||
| let f = EVAL(ast[1], env) // eval regular function | ||
| f._M = 1 // mark as macro | ||
| f.M = 1 // mark as macro | ||
| return f | ||
@@ -87,3 +89,3 @@ } else if (ast[0] == "let") { // new environment with bindings | ||
| } | ||
| f.ast = [ast[2], env, ast[1]] // f.ast compresses more than f.data | ||
| f.A = [ast[2], env, ast[1]] // f.A compresses more than f.data | ||
| return f | ||
@@ -93,5 +95,5 @@ } else { // invoke list form | ||
| f = el[0] | ||
| if (f.ast) { | ||
| ast = f.ast[0] | ||
| env = eval_ast_or_bind(f.ast[2], f.ast[1], el.slice(1)) // TCO | ||
| if (f.A) { | ||
| ast = f.A[0] | ||
| env = eval_ast_or_bind(f.A[2], f.A[1], el.slice(1)) // TCO | ||
| } else { | ||
@@ -104,3 +106,3 @@ return f(...el.slice(1)) | ||
| E = Object.assign(Object.create(global), { | ||
| let E = Object.assign(this, { | ||
| "js": eval, | ||
@@ -117,5 +119,6 @@ "eval": (...a) => EVAL(a[0], E), | ||
| "isa": (...a) => a[0] instanceof a[1], | ||
| "type": (...a) => typeof a[0], | ||
| "new": (...a) => new (a[0].bind(...a)), | ||
| "del": (...a) => delete a[0][a[1]], | ||
| // new can use Reflect.construct | ||
| //"new": (...a) => new (a[0].bind(...a)), | ||
| // delete can use Reflect.deleteProperty | ||
| //"del": (...a) => delete a[0][a[1]], | ||
| //"list": (...a) => a, | ||
@@ -127,3 +130,3 @@ //"map": (...a) => a[1].map(x => a[0](x)), | ||
| "slurp": (...a) => require("fs").readFileSync(a[0],"utf8"), | ||
| "load": (...a) => E.eval(JSON.parse(E.slurp(a[0]))), | ||
| "load": (...a) => EVAL(JSON.parse(require("fs").readFileSync(a[0],"utf8")),E), | ||
@@ -138,5 +141,7 @@ "ARGS": process.argv.slice(3) | ||
| require("repl").start({ | ||
| eval: (...a) => a[3](!1,JSON.stringify(EVAL(JSON.parse(a[0]),E))), | ||
| writer: (...a) => a[0], | ||
| terminal: false}) | ||
| eval: (...a) => a[3](0,EVAL(JSON.parse(a[0]),E)), | ||
| writer: JSON.stringify, | ||
| terminal: 0}) | ||
| } | ||
| }() |
@@ -1,1 +0,1 @@ | ||
| for(_=',txr=kst^[1]9r9@,i$$)#e(II@#HinL L K"==Q[0]P[2]ErED,nC[nB))7(...n6.slicI56517;4^rLgZslurpYJSON.XreWt(Vif(UL^anceof T TArrayWturn !(r7){IDfor(let{ n=QrP)Vr51typeof Object.nPB9]throwWquiW("evalelse:6)=>"r.length-1n9," e.a^),functionXparsIprocess.argvU"cWatIie=; n(n,e){;n&&L e&&e[]._M;)n=e[]4n} Ir#{;;){UVr#;Ukn(r$r;defi[@]=ID#;~H;n._M=1C}{i=i); nK@)n%2&&(i[@B-1]]=I@B]$7;kD}{`@;.-2Kn?=nE:e}.e.apply(C527}trytry{H}catch(nE,V[D9]$,B]7} do,i);kr[]} ifkH?D:r[3];{fn6,V@$C7};n.a^=[D$,@]C}Vr$e=;U!)e4kP$=VE,9C517}}}}} t=(nx,r){r?(t=tn.somI(e#=>"&Qe?tB[i+1]]=r5i):(t[e]=r[i],!1)t):n?n.map(6)=>Ix7:"ZQn?nKt?tB]:A.(n+" not found"):n};A=assign(global{js:,I,A"==== << ++ -- ** //n9$saTn9xypeCewnew(.bLd6)deldee ,{ },WadYfs").WadFileSync(,"utf8"loadA.(A.Y(7ARGS:53)}E?A.load(E):Wpl").^arV{n[3](!1,XZify(IA7writerxermLal:!1})';g=/[-T-Z4-7B-EPQKLHI#$@9^kx]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_=',nx]=kin9))@e(Q.slicQPP1@$,t#[1]IiIH#)_QH_^reLLturn K;KnEnI,D)=>C;i=B"==7[2]6i65[0]4),Zn4Y#Ze=YXr(W{foW;VJSON.Ue.ATif(9stanceof Array!(i@Klet {n=7i4)WiP1){KQ5eval 9 [ntypeof throwLquiL("=Object.else(...n:C"Yi.length-1 D"cLatQUparsQprocess.argv"function)XI];Kfs").LadFileSync(Y,"utf8")!(){ n(n,e)Vn&&Y9 e&&e4].M;)n=e4]$E} Qi_V;){Wi_;i=n(i#Zi;defKt[HkQ5_;~^E.M=1x}let{tt);foWnH)n%2&&(t[H-1]kQH]_)B5}{`KH;.-2n?YIkn6:e}.e.apply(YxP2@}trytry{K^}catch(n6,W[5I]#,]@} do, Zt)Bi[ ]} ifi=^?5:i[3];{fn,WH#x@}E.A=[5#,H]x}WiX;!T)Ke$BT4#=WT6,TIx$}}}}}r=(n,r_{Kt?(rrZn.somQ(e,iC"&7e?r[i+1]ktPi):(r[ekt[i],0)Zr):n?n.map(CQY,r@:"7n?nr?r]:i.(n+" not found"):n},iassign(this,{js:,QY,iZ"====<<++--**//DisaYD{ Y},LadYZslurp,loadQZiZARGS:P3)});6?i.load(6):Lpl").start({n[3](0,QYZi)Zwriter:Ustr9gify#erm9al:0})}()';g=/[-T-Z4-7B-EKL^_HI#$PQ@9kx]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| function n(n,e){for(;n instanceof Array&&n[0]in e&&e[n[0]]._M;)n=e[n[0]](...n.slice(1));return n}function e(r,i){for(;;){if(!(r instanceof Array))return t(r,i);if(r=n(r,i),!(r instanceof Array))return r;if("def"==r[0])return i[r[1]]=e(r[2],i);if("~"==r[0]){let n=e(r[1],i);return n._M=1,n}if("let"==r[0]){i=Object.create(i);for(let n in r[1])n%2&&(i[r[1][n-1]]=e(r[1][n],i));r=r[2]}else{if("`"==r[0])return r[1];if(".-"==r[0]){let n=t(r.slice(1),i),e=n[0][n[1]];return 2 in n?n[0][n[1]]=n[2]:e}if("."==r[0]){let n=t(r.slice(1),i),e=n[0][n[1]];return e.apply(n[0],n.slice(2))}if("try"==r[0])try{return e(r[1],i)}catch(n){return e(r[2][2],t([r[2][1]],i,[n]))}else if("do"==r[0]){let n=t(r.slice(1,r.length-1),i);r=r[r.length-1]}else if("if"==r[0])r=e(r[1],i)?r[2]:r[3];else{if("fn"==r[0]){let n=function(...n){return e(r[2],t(r[1],i,n))};return n.ast=[r[2],i,r[1]],n}{let n=t(r,i),e=n[0];if(!e.ast)return e(...n.slice(1));r=e.ast[0],i=t(e.ast[2],e.ast[1],n.slice(1))}}}}}let t=function(n,t,r){return r?(t=Object.create(t),n.some((e,i)=>"&"==e?t[n[i+1]]=r.slice(i):(t[e]=r[i],!1)),t):n instanceof Array?n.map((...n)=>e(n[0],t)):"string"==typeof n?n in t?t[n]:E.throw(n+" not found"):n};E=Object.assign(Object.create(global),{js:eval,eval:(...n)=>e(n[0],E),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],type:(...n)=>typeof n[0],new:(...n)=>new(n[0].bind(...n)),del:(...n)=>delete n[0][n[1]],throw:(...n)=>{throw n[0]},read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...n)=>E.eval(JSON.parse(E.slurp(n[0]))),ARGS:process.argv.slice(3)}),process.argv[2]?E.load(process.argv[2]):require("repl").start({eval:(...n)=>n[3](!1,JSON.stringify(e(JSON.parse(n[0]),E))),writer:(...n)=>n[0],terminal:!1}) | ||
| !function(){function n(n,e){for(;n instanceof Array&&n[0]in e&&e[n[0]].M;)n=e[n[0]](...n.slice(1));return n}function e(i,t){for(;;){if(!(i instanceof Array))return r(i,t);if(i=n(i,t),!(i instanceof Array))return i;if("def"==i[0])return t[i[1]]=e(i[2],t);if("~"==i[0]){let n=e(i[1],t);return n.M=1,n}if("let"==i[0]){t=Object.create(t);for(let n in i[1])n%2&&(t[i[1][n-1]]=e(i[1][n],t));i=i[2]}else{if("`"==i[0])return i[1];if(".-"==i[0]){let n=r(i.slice(1),t),e=n[0][n[1]];return 2 in n?n[0][n[1]]=n[2]:e}if("."==i[0]){let n=r(i.slice(1),t),e=n[0][n[1]];return e.apply(n[0],n.slice(2))}if("try"==i[0])try{return e(i[1],t)}catch(n){return e(i[2][2],r([i[2][1]],t,[n]))}else if("do"==i[0]){let n=r(i.slice(1,i.length-1),t);i=i[i.length-1]}else if("if"==i[0])i=e(i[1],t)?i[2]:i[3];else{if("fn"==i[0]){let n=function(...n){return e(i[2],r(i[1],t,n))};return n.A=[i[2],t,i[1]],n}{let n=r(i,t),e=n[0];if(!e.A)return e(...n.slice(1));i=e.A[0],t=r(e.A[2],e.A[1],n.slice(1))}}}}}let r=function(n,r,t){return t?(r=Object.create(r),n.some((e,i)=>"&"==e?r[n[i+1]]=t.slice(i):(r[e]=t[i],0)),r):n instanceof Array?n.map((...n)=>e(n[0],r)):typeof ""==typeof n?n in r?r[n]:i.throw(n+" not found"):n},i=Object.assign(this,{js:eval,eval:(...n)=>e(n[0],i),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],throw:(...n)=>{throw n[0]},read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...n)=>e(JSON.parse(require("fs").readFileSync(n[0],"utf8")),i),ARGS:process.argv.slice(3)});process.argv[2]?i.load(process.argv[2]):require("repl").start({eval:(...n)=>n[3](0,e(JSON.parse(n[0]),i)),writer:JSON.stringify,terminal:0})}() |
+20
-15
@@ -5,2 +5,4 @@ // miniMAL | ||
| !function() { | ||
| // 2 args: eval_ast, 3 args: env_bind | ||
@@ -13,3 +15,3 @@ let eval_ast_or_bind = function(ast, env, exprs) { | ||
| ast.some((a,i) => a == "&" ? env[ast[i+1]] = exprs.slice(i) | ||
| : (env[a] = exprs[i], false) ) | ||
| : (env[a] = exprs[i], 0)) | ||
| return env | ||
@@ -31,3 +33,3 @@ } | ||
| && ast[0] in env | ||
| && env[ast[0]]._M) { | ||
| && env[ast[0]].M) { | ||
| ast = env[ast[0]](...ast.slice(1)) | ||
@@ -51,3 +53,3 @@ } | ||
| let f = EVAL(ast[1], env) // eval regular function | ||
| f._M = 1 // mark as macro | ||
| f.M = 1 // mark as macro | ||
| return f | ||
@@ -87,3 +89,3 @@ } else if (ast[0] == "let") { // new environment with bindings | ||
| } | ||
| f.ast = [ast[2], env, ast[1]] // f.ast compresses more than f.data | ||
| f.A = [ast[2], env, ast[1]] // f.A compresses more than f.data | ||
| return f | ||
@@ -93,5 +95,5 @@ } else { // invoke list form | ||
| f = el[0] | ||
| if (f.ast) { | ||
| ast = f.ast[0] | ||
| env = eval_ast_or_bind(f.ast[2], f.ast[1], el.slice(1)) // TCO | ||
| if (f.A) { | ||
| ast = f.A[0] | ||
| env = eval_ast_or_bind(f.A[2], f.A[1], el.slice(1)) // TCO | ||
| } else { | ||
@@ -104,3 +106,3 @@ return f(...el.slice(1)) | ||
| E = Object.assign(Object.create(global), { | ||
| let E = Object.assign(this, { | ||
| "js": eval, | ||
@@ -117,5 +119,6 @@ "eval": (...a) => EVAL(a[0], E), | ||
| "isa": (...a) => a[0] instanceof a[1], | ||
| "type": (...a) => typeof a[0], | ||
| "new": (...a) => new (a[0].bind(...a)), | ||
| "del": (...a) => delete a[0][a[1]], | ||
| // new can use Reflect.construct | ||
| //"new": (...a) => new (a[0].bind(...a)), | ||
| // delete can use Reflect.deleteProperty | ||
| //"del": (...a) => delete a[0][a[1]], | ||
| //"list": (...a) => a, | ||
@@ -127,3 +130,3 @@ //"map": (...a) => a[1].map(x => a[0](x)), | ||
| "slurp": (...a) => require("fs").readFileSync(a[0],"utf8"), | ||
| "load": (...a) => E.eval(JSON.parse(E.slurp(a[0]))), | ||
| "load": (...a) => EVAL(JSON.parse(require("fs").readFileSync(a[0],"utf8")),E), | ||
@@ -138,5 +141,7 @@ "ARGS": process.argv.slice(3) | ||
| require("repl").start({ | ||
| eval: (...a) => a[3](!1,JSON.stringify(EVAL(JSON.parse(a[0]),E))), | ||
| writer: (...a) => a[0], | ||
| terminal: false}) | ||
| eval: (...a) => a[3](0,EVAL(JSON.parse(a[0]),E)), | ||
| writer: JSON.stringify, | ||
| terminal: 0}) | ||
| } | ||
| }() |
@@ -1,1 +0,1 @@ | ||
| for(_='),~,["|","z"|ZZ`zYinX X WvalV;t=U=nR[tQifP)=>K(...I:InKnGmapF(tE.FE=>DstrXgCJSON.B,i)5[0]45,fR4("\\n".VuefacZelse]]Object.let))[2]t.length-1[1]n,",t4.onkeyup]\\n["textareafunctionItKnE4,f.ast{ n=eEP(" t Xstanceof Arraycreate(.slice(< rows=9 cols=60>return "==t4)"G41)[n]; nE5{for(;;){P(!(eE5; defiQ]RE5; {i=i);for( eWt)e%2&&(iQ[e-1RE[e],iUt}{ `t; .-2Wn?n4[n]R:f} .f.apply(n4,n2} do1,)5Ut[]} PtRE5?t:t[3];{ fn{ f=If){nE,eE,i,f};=Q,i,t],f};P(!)fIn1U4,i=e(,,n1}}}}}var e=E,e5{i?(e=e~t.some((n,fK"&"=R?eQ[f+1=if):(e[n]=i[f],!1,e):?t.F(e:"C"==typeof t?tWe?eQ]:nullQ]:t};A=assign(this~{js:eV,eV:A~"====<<++--**//n,FGDn4E}~b.XnerHTML=\'["ZmYmXi"|+zmYMAL"defzfnZn"]|PznZ*znZ-zn",1],1Fz`",[7,8,9.zMathYrandom"</></>\',t=b.children=((Kt=t4.split)Dt?BCPy(n(BparseE~A:"").joX()';g=/[^ -36-AHJL-OST[-y{}]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_=',["~","|"~zz`|ZinY Y XvalW;t=V"==U[tRifQ)=>P(...K:KnPnImapG(tF.GF=>EJSON.DnFC,i)B[0]5B,f=n54("\\n".Wuefaczelse]]typeof let=Object.))[2]t.length-1[1]n,",t5.onkeyup]\\n["textareafunctionKtPC5,f.astcreate({ n=eF Q("t Ystanceof Array.slice(< rows=9 cols=60>return Ut5)"I5 1)4[n]; CB{for(;;){Q(!(eFB;defiR]=CB;{ii);for( eXt)e%2&&(iR[e-1=C[e],iVt}{`t;.-2Xn?n5[n]=n:f}.f.apply(n5,n2}do 1,)BVt[]} Qt=CB?t:t[3];{fn{ f=Kf){C,eF,i,f};=R,i,t],f} 4;Q(!)fKn1V5,i=e(,,n1}}}}}var e=F,eB{i?(ee),t.some((n,fP"&Un?eR[f+1=if):(e[n]=i[f],0,e):?t.G(e:"Ut?tXe?eR]:nullR]:t};AassigChis,{js:eW,eW:A),"====<<++--**//n,GIEn5F}),b.YnerHTML=\'["zmZmYi"~+|mZMAL"def|fnzn"]~Q|nz*|nz-|n",1],1G|`",[7,8,9.|MathZrandom"</></>\',t=b.children=((Pt=t5.split)Et?DstrYgQy(n(DparseF),A:"").joY()';g=/[^ -36-AHJL-OST[-y{}]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| function n(t,i){for(;;){if(!(t instanceof Array))return e(t,i);if("def"==t[0])return i[t[1]]=n(t[2],i);if("let"==t[0]){i=Object.create(i);for(let e in t[1])e%2&&(i[t[1][e-1]]=n(t[1][e],i));t=t[2]}else{if("`"==t[0])return t[1];if(".-"==t[0]){let n=e(t.slice(1),i),f=n[0][n[1]];return 2 in n?n[0][n[1]]=n[2]:f}if("."==t[0]){let n=e(t.slice(1),i),f=n[0][n[1]];return f.apply(n[0],n.slice(2))}if("do"==t[0]){let n=e(t.slice(1,t.length-1),i);t=t[t.length-1]}else if("if"==t[0])t=n(t[1],i)?t[2]:t[3];else{if("fn"==t[0]){let f=function(...f){return n(t[2],e(t[1],i,f))};return f.ast=[t[2],i,t[1]],f}{let n=e(t,i),f=n[0];if(!f.ast)return f(...n.slice(1));t=f.ast[0],i=e(f.ast[2],f.ast[1],n.slice(1))}}}}}var e=function(t,e,i){return i?(e=Object.create(e),t.some((n,f)=>"&"==n?e[t[f+1]]=i.slice(f):(e[n]=i[f],!1)),e):t instanceof Array?t.map((...t)=>n(t[0],e)):"string"==typeof t?t in e?e[t]:null[t]:t};E=Object.assign(Object.create(this),{js:eval,eval:(...t)=>n(t[0],E),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],map:(...n)=>n[1].map(t=>n[0](t))}),b.innerHTML='<textarea rows=9 cols=60>["let",["m",["`","mini"]],["+","m",["`","MAL"]]]\n["def","fac",["fn",["n"],["if","n",["*","n",["fac",["-","n",1]]],1]]]\n["map","fac",["`",[7,8,9]]]\n[".","Math",["`","random"]]</textarea><textarea rows=9 cols=60></textarea>',t=b.children,t[0].onkeyup=(()=>t[1].value=t[0].value.split("\n").map(t=>t?JSON.stringify(n(JSON.parse(t),E)):"").join("\n")),t[0].onkeyup() | ||
| function n(t,i){for(;;){if(!(t instanceof Array))return e(t,i);if("def"==t[0])return i[t[1]]=n(t[2],i);if("let"==t[0]){i=Object.create(i);for(let e in t[1])e%2&&(i[t[1][e-1]]=n(t[1][e],i));t=t[2]}else{if("`"==t[0])return t[1];if(".-"==t[0]){let n=e(t.slice(1),i),f=n[0][n[1]];return 2 in n?n[0][n[1]]=n[2]:f}if("."==t[0]){let n=e(t.slice(1),i),f=n[0][n[1]];return f.apply(n[0],n.slice(2))}if("do"==t[0]){let n=e(t.slice(1,t.length-1),i);t=t[t.length-1]}else if("if"==t[0])t=n(t[1],i)?t[2]:t[3];else{if("fn"==t[0]){let f=function(...f){return n(t[2],e(t[1],i,f))};return f.ast=[t[2],i,t[1]],f}{let n=e(t,i),f=n[0];if(!f.ast)return f(...n.slice(1));t=f.ast[0],i=e(f.ast[2],f.ast[1],n.slice(1))}}}}}var e=function(t,e,i){return i?(e=Object.create(e),t.some((n,f)=>"&"==n?e[t[f+1]]=i.slice(f):(e[n]=i[f],0)),e):t instanceof Array?t.map((...t)=>n(t[0],e)):typeof ""==typeof t?t in e?e[t]:null[t]:t};E=Object.assign(this,{js:eval,eval:(...t)=>n(t[0],E),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],map:(...n)=>n[1].map(t=>n[0](t))}),b.innerHTML='<textarea rows=9 cols=60>["let",["m",["`","mini"]],["+","m",["`","MAL"]]]\n["def","fac",["fn",["n"],["if","n",["*","n",["fac",["-","n",1]]],1]]]\n["map","fac",["`",[7,8,9]]]\n[".","Math",["`","random"]]</textarea><textarea rows=9 cols=60></textarea>',t=b.children,t[0].onkeyup=(()=>t[1].value=t[0].value.split("\n").map(t=>t?JSON.stringify(n(JSON.parse(t),E)):"").join("\n")),t[0].onkeyup() |
+2
-2
@@ -12,3 +12,3 @@ // miniMAL | ||
| ast.some((a,i) => a == "&" ? env[ast[i+1]] = exprs.slice(i) | ||
| : (env[a] = exprs[i], false) ) | ||
| : (env[a] = exprs[i], 0)) | ||
| return env | ||
@@ -76,3 +76,3 @@ } | ||
| E = Object.assign(Object.create(this), { | ||
| E = Object.assign(this, { | ||
| "js": eval, | ||
@@ -79,0 +79,0 @@ "eval": (...a) => EVAL(a[0], E), |
@@ -1,1 +0,1 @@ | ||
| for(_=']=|,izinZt(Y))X.slice(WW1XV Z UvalT"==R[0]QifPreL,rKK)I[1]HnHG(nEZstanceof D DArrayCLturn B!ECXB@let9{9 e=7nQ6R6)55744iEW1$),#eQK#t=strZgslurpJSON.n=[e)=>[2]ne){BYfor(,etypeof Object.G,"throwelse(...:n"6 :en.length-1t.astparse(P("functioncLate($)H];Bmodule.exports=E){ eE){;nC&&6Z e&&e[6]._M;)e[6]nV;Bn} tEI{;;){P(@iEI;P(eEK#@n;def5Br[G|YI;~4tEHI;Be._M=1}95{r=r);9 eUG)e%2&&(r[G-1]|tEH]I);}{`5BG;.-2Ue?H|e:t}.t.apply(W2X}try5try{BtEHI}catch(z([H]K,]X} do$,#r);n[]} P5tEHI?:n[3];{fn4zEHKX};Be.ast=[K,G]}7iE;P(!)BteV;QK=i(,HV}}}}}9 i=(ezI{Br?(i=i).some(E,t"&Rn?i[t+1]|rWt):(i[n|r[t],!1)#i):eC?e.map(nY6zX:"Re?eUi?i]:n.(e+" not found"):e};Bassign(n#{js:eTTY,n#"= ===< <+ +- -* */ /Gzsa6DG,type6,newnew(6.bZdn)#delde9e 6[G],{ 6}Kead6#LquiL("fs").LadFileSync(6,"utf8"#loadn.eT(n.(X#LpPy(Y#nX})}';g=/[^ -"%-38:-?AFJM-OS[-y{}~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='re||turn z;z_]=^inZ,iY))X.slice(WW1XV"==U[0]TifRt(Q,rPP)L[1]KnKI(nHZstanceof G GArrayE!HEXzDletC{C e=BnT@U@)99B77iHW16),5eT4P5t=4JSON.n=[e)=>t.A[2]ne){zQ Z for(,e,"utf8"Object.I,"throwelse(...:n"@:e n.length-1typeof parse(R("functionc|ate(|qui|("fs").|adFileSync(6)K]_module.exports=H){ eH){;nE&&@Z e&&e[@].M;)e[@]nV_n} tHL{;;){R(DiHL;R(eHP5Dn;def9zr[I^QL;~7tHKL_e.M=1}C9{r=r);C eI)e%2&&(r[I-1]^tHK]L);}{`9zI;.-2e?4K^e:t}.t.apply(4W2X}try9try{ztHKL}catch(Y([K]P,]X} do6,5r);n[]} R9tHKL?:n[3];{fn7YHKPX}_e.A=[P,I]}BiH;R(!)zteV;TP=i(,KV}}}}}C i=(eYL{zr?(i=i).some(H,t"&Un?i[t+1]^rWt):(i[n^r[t],0)5i):eE?e.map(nQ@YX:"Ue?ei?i]:n.(e+" not found"):e}_assign(n5{js:evalval Q4,n5"====<<++--**//IYsa@GI,type@,newnew(@.bZdn)5deldeCe @[I],{ @}Pead@5slurp@5load Q4)5n5|p strZgRy(Q45nX})}';g=/[^ -38:-?AFJM-OS[\]`-y{}~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| module.exports=function(n){function e(n,e){for(;n instanceof Array&&n[0]in e&&e[n[0]]._M;)n=e[n[0]](...n.slice(1));return n}function t(n,r){for(;;){if(!(n instanceof Array))return i(n,r);if(n=e(n,r),!(n instanceof Array))return n;if("def"==n[0])return r[n[1]]=t(n[2],r);if("~"==n[0]){let e=t(n[1],r);return e._M=1,e}if("let"==n[0]){r=Object.create(r);for(let e in n[1])e%2&&(r[n[1][e-1]]=t(n[1][e],r));n=n[2]}else{if("`"==n[0])return n[1];if(".-"==n[0]){let e=i(n.slice(1),r),t=e[0][e[1]];return 2 in e?e[0][e[1]]=e[2]:t}if("."==n[0]){let e=i(n.slice(1),r),t=e[0][e[1]];return t.apply(e[0],e.slice(2))}if("try"==n[0])try{return t(n[1],r)}catch(e){return t(n[2][2],i([n[2][1]],r,[e]))}else if("do"==n[0]){let e=i(n.slice(1,n.length-1),r);n=n[n.length-1]}else if("if"==n[0])n=t(n[1],r)?n[2]:n[3];else{if("fn"==n[0]){let e=function(...e){return t(n[2],i(n[1],r,e))};return e.ast=[n[2],r,n[1]],e}{let e=i(n,r),t=e[0];if(!t.ast)return t(...e.slice(1));n=t.ast[0],r=i(t.ast[2],t.ast[1],e.slice(1))}}}}}let i=function(e,i,r){return r?(i=Object.create(i),e.some((n,t)=>"&"==n?i[e[t+1]]=r.slice(t):(i[n]=r[t],!1)),i):e instanceof Array?e.map((...n)=>t(n[0],i)):"string"==typeof e?e in i?i[e]:n.throw(e+" not found"):e};return n=Object.assign(Object.create(n),{js:eval,eval:(...e)=>t(e[0],n),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],type:(...n)=>typeof n[0],new:(...n)=>new(n[0].bind(...n)),del:(...n)=>delete n[0][n[1]],throw:(...n)=>{throw n[0]},read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...e)=>n.eval(JSON.parse(n.slurp(e[0]))),rep:(...e)=>JSON.stringify(t(JSON.parse(e[0]),n))})} | ||
| module.exports=function(n){function e(n,e){for(;n instanceof Array&&n[0]in e&&e[n[0]].M;)n=e[n[0]](...n.slice(1));return n}function t(n,r){for(;;){if(!(n instanceof Array))return i(n,r);if(n=e(n,r),!(n instanceof Array))return n;if("def"==n[0])return r[n[1]]=t(n[2],r);if("~"==n[0]){let e=t(n[1],r);return e.M=1,e}if("let"==n[0]){r=Object.create(r);for(let e in n[1])e%2&&(r[n[1][e-1]]=t(n[1][e],r));n=n[2]}else{if("`"==n[0])return n[1];if(".-"==n[0]){let e=i(n.slice(1),r),t=e[0][e[1]];return 2 in e?e[0][e[1]]=e[2]:t}if("."==n[0]){let e=i(n.slice(1),r),t=e[0][e[1]];return t.apply(e[0],e.slice(2))}if("try"==n[0])try{return t(n[1],r)}catch(e){return t(n[2][2],i([n[2][1]],r,[e]))}else if("do"==n[0]){let e=i(n.slice(1,n.length-1),r);n=n[n.length-1]}else if("if"==n[0])n=t(n[1],r)?n[2]:n[3];else{if("fn"==n[0]){let e=function(...e){return t(n[2],i(n[1],r,e))};return e.A=[n[2],r,n[1]],e}{let e=i(n,r),t=e[0];if(!t.A)return t(...e.slice(1));n=t.A[0],r=i(t.A[2],t.A[1],e.slice(1))}}}}}let i=function(e,i,r){return r?(i=Object.create(i),e.some((n,t)=>"&"==n?i[e[t+1]]=r.slice(t):(i[n]=r[t],0)),i):e instanceof Array?e.map((...n)=>t(n[0],i)):typeof ""==typeof e?e in i?i[e]:n.throw(e+" not found"):e};return n=Object.assign(Object.create(n),{js:eval,eval:(...e)=>t(e[0],n),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],type:(...n)=>typeof n[0],new:(...n)=>new(n[0].bind(...n)),del:(...n)=>delete n[0][n[1]],throw:(...n)=>{throw n[0]},read:(...n)=>JSON.parse(n[0]),slurp:(...n)=>require("fs").readFileSync(n[0],"utf8"),load:(...e)=>t(JSON.parse(require("fs").readFileSync(e[0],"utf8")),n),rep:(...e)=>JSON.stringify(t(JSON.parse(e[0]),n))})} |
+8
-8
@@ -14,3 +14,3 @@ // miniMAL | ||
| ast.some((a,i) => a == "&" ? env[ast[i+1]] = exprs.slice(i) | ||
| : (env[a] = exprs[i], false) ) | ||
| : (env[a] = exprs[i], 0)) | ||
| return env | ||
@@ -32,3 +32,3 @@ } | ||
| && ast[0] in env | ||
| && env[ast[0]]._M) { | ||
| && env[ast[0]].M) { | ||
| ast = env[ast[0]](...ast.slice(1)) | ||
@@ -52,3 +52,3 @@ } | ||
| let f = EVAL(ast[1], env) // eval regular function | ||
| f._M = 1 // mark as macro | ||
| f.M = 1 // mark as macro | ||
| return f | ||
@@ -88,3 +88,3 @@ } else if (ast[0] == "let") { // new environment with bindings | ||
| } | ||
| f.ast = [ast[2], env, ast[1]] // f.ast compresses more than f.data | ||
| f.A = [ast[2], env, ast[1]] // f.A compresses more than f.data | ||
| return f | ||
@@ -94,5 +94,5 @@ } else { // invoke list form | ||
| f = el[0] | ||
| if (f.ast) { | ||
| ast = f.ast[0] | ||
| env = eval_ast_or_bind(f.ast[2], f.ast[1], el.slice(1)) // TCO | ||
| if (f.A) { | ||
| ast = f.A[0] | ||
| env = eval_ast_or_bind(f.A[2], f.A[1], el.slice(1)) // TCO | ||
| } else { | ||
@@ -128,3 +128,3 @@ return f(...el.slice(1)) | ||
| "slurp": (...a) => require("fs").readFileSync(a[0],"utf8"), | ||
| "load": (...a) => E.eval(JSON.parse(E.slurp(a[0]))), | ||
| "load": (...a) => EVAL(JSON.parse(require("fs").readFileSync(a[0],"utf8")),E), | ||
@@ -131,0 +131,0 @@ "rep": (...a) => JSON.stringify(EVAL(JSON.parse(a[0]),E)) |
@@ -1,1 +0,1 @@ | ||
| for(_='return Z;ZY]=X))We(V.slicVUU1WT,rR(nQ[1]PR)KnPIVIKHinG G F"==E.asD,iCifBGstanceof @ @Array9!Q9WZ8let7{7 t=6n[0]5E5)446iQU1t[0]K,e=strGgJSON.n=[teDt[2]nt){ZVObjectfor(,ttypeof I,")=>throwelse(... : n"5parsVn.length-1B("function.creatV)P]YmGiMAL=Q){ tQ){;n9&&5G t&&t[5]._M;)t[5] nTYn} eQK{;;){B(8iQK;B(tQK,8n;def4Zr[IXVK;~HYt._M=1}74{r=r);7 tFI)t%2&&(r[I-1]XVI]K);}{`4ZI;.-2Ft?PXt:e}.e.apply(U2W}try4try{ZH}catch(C([P]R,]W} do,)K;n[]} B4H?:n[3];{fn C(IRW}YtDt=[R,I]}6iQ;B(!)Ze tT;[0]R=i(,PT}}}}}7 i=(tCK{Zr?(i=i).somVQ,e"&En?i[e+1]XrUe):(i[nXr[e],!1WC):t9?t.map( nV5CW:"Et?tFi?i]:n.(t+" not found"):t}YDsign(n||this),{js:eval,eval: tV,n),"====<<++--**//ICsa5@Iype5,newnew(5.bGd nW,delde7e 5[I],{ 5}Read5)Rep: tBy(V),nW})}';g=/[^ -3:-?AJL-OS[-~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='return Z;ZY]=X))We(V.slicVUU1WT,rR(nQ[1]PR)KnPIVIKHinG G F"==E.asD,iCifBGstanceof 9 9Array8!Q8WZ7let6{6 t=5n[0]4E4)5iQU1t[0]K,e=JSON.n=[teDt[2]nt){ZVObjectfor(,tI,")=>throwelse(...:n " 4parsVn.length-1typeof B("function.creatV)P]YmGiMAL=Q){ tQ){;n8&&4G t&&t[4].M;)t[4]nTYn} eQK{;;){B(7iQK;B(tQK,7n;defZr[IXVK;~HYt.M=1}6{r=r);6 tFI)t%2&&(r[I-1]XVI]K);}{`ZI;.-2Ft?PXt:e}.e.apply(U2W}trytry{ZH}catch(C([P]R,]W} do,)K;n[]} BH?:n[3];{fnC(IRW}YtDt=[R,I]}5iQ;B(!)ZetT;[0]R=i(,PT}}}}}6 i=(tCK{Zr?(i=i).somVQ,e"&En?i[e+1]XrUe):(i[nXr[e],0WC):t8?t.map(nV4CW:"Et?tFi?i]:n.(t+" not found"):t}YDsign(n||this),{js:eval,eval:tV,n),"====<<++--**//ICsa 49Iype 4,new new(4.bGdnW,del de6e 4[I], { 4}Read 4)Rep:tstrGgBy(V),nW})}';g=/[^ -3:-AJL-OS[-~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| miniMAL=function(n){function t(n,t){for(;n instanceof Array&&n[0]in t&&t[n[0]]._M;)n=t[n[0]](...n.slice(1));return n}function e(n,r){for(;;){if(!(n instanceof Array))return i(n,r);if(n=t(n,r),!(n instanceof Array))return n;if("def"==n[0])return r[n[1]]=e(n[2],r);if("~"==n[0]){let t=e(n[1],r);return t._M=1,t}if("let"==n[0]){r=Object.create(r);for(let t in n[1])t%2&&(r[n[1][t-1]]=e(n[1][t],r));n=n[2]}else{if("`"==n[0])return n[1];if(".-"==n[0]){let t=i(n.slice(1),r),e=t[0][t[1]];return 2 in t?t[0][t[1]]=t[2]:e}if("."==n[0]){let t=i(n.slice(1),r),e=t[0][t[1]];return e.apply(t[0],t.slice(2))}if("try"==n[0])try{return e(n[1],r)}catch(t){return e(n[2][2],i([n[2][1]],r,[t]))}else if("do"==n[0]){let t=i(n.slice(1,n.length-1),r);n=n[n.length-1]}else if("if"==n[0])n=e(n[1],r)?n[2]:n[3];else{if("fn"==n[0]){let t=function(...t){return e(n[2],i(n[1],r,t))};return t.ast=[n[2],r,n[1]],t}{let t=i(n,r),e=t[0];if(!e.ast)return e(...t.slice(1));n=e.ast[0],r=i(e.ast[2],e.ast[1],t.slice(1))}}}}}let i=function(t,i,r){return r?(i=Object.create(i),t.some((n,e)=>"&"==n?i[t[e+1]]=r.slice(e):(i[n]=r[e],!1)),i):t instanceof Array?t.map((...n)=>e(n[0],i)):"string"==typeof t?t in i?i[t]:n.throw(t+" not found"):t};return n=Object.assign(Object.create(n||this),{js:eval,eval:(...t)=>e(t[0],n),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],type:(...n)=>typeof n[0],new:(...n)=>new(n[0].bind(...n)),del:(...n)=>delete n[0][n[1]],throw:(...n)=>{throw n[0]},read:(...n)=>JSON.parse(n[0]),rep:(...t)=>JSON.stringify(e(JSON.parse(t[0]),n))})} | ||
| miniMAL=function(n){function t(n,t){for(;n instanceof Array&&n[0]in t&&t[n[0]].M;)n=t[n[0]](...n.slice(1));return n}function e(n,r){for(;;){if(!(n instanceof Array))return i(n,r);if(n=t(n,r),!(n instanceof Array))return n;if("def"==n[0])return r[n[1]]=e(n[2],r);if("~"==n[0]){let t=e(n[1],r);return t.M=1,t}if("let"==n[0]){r=Object.create(r);for(let t in n[1])t%2&&(r[n[1][t-1]]=e(n[1][t],r));n=n[2]}else{if("`"==n[0])return n[1];if(".-"==n[0]){let t=i(n.slice(1),r),e=t[0][t[1]];return 2 in t?t[0][t[1]]=t[2]:e}if("."==n[0]){let t=i(n.slice(1),r),e=t[0][t[1]];return e.apply(t[0],t.slice(2))}if("try"==n[0])try{return e(n[1],r)}catch(t){return e(n[2][2],i([n[2][1]],r,[t]))}else if("do"==n[0]){let t=i(n.slice(1,n.length-1),r);n=n[n.length-1]}else if("if"==n[0])n=e(n[1],r)?n[2]:n[3];else{if("fn"==n[0]){let t=function(...t){return e(n[2],i(n[1],r,t))};return t.ast=[n[2],r,n[1]],t}{let t=i(n,r),e=t[0];if(!e.ast)return e(...t.slice(1));n=e.ast[0],r=i(e.ast[2],e.ast[1],t.slice(1))}}}}}let i=function(t,i,r){return r?(i=Object.create(i),t.some((n,e)=>"&"==n?i[t[e+1]]=r.slice(e):(i[n]=r[e],0)),i):t instanceof Array?t.map((...n)=>e(n[0],i)):typeof ""==typeof t?t in i?i[t]:n.throw(t+" not found"):t};return n=Object.assign(Object.create(n||this),{js:eval,eval:(...t)=>e(t[0],n),"=":(...n)=>n[0]===n[1],"<":(...n)=>n[0]<n[1],"+":(...n)=>n[0]+n[1],"-":(...n)=>n[0]-n[1],"*":(...n)=>n[0]*n[1],"/":(...n)=>n[0]/n[1],isa:(...n)=>n[0]instanceof n[1],type:(...n)=>typeof n[0],new:(...n)=>new(n[0].bind(...n)),del:(...n)=>delete n[0][n[1]],throw:(...n)=>{throw n[0]},read:(...n)=>JSON.parse(n[0]),rep:(...t)=>JSON.stringify(e(JSON.parse(t[0]),n))})} |
+5
-5
@@ -14,3 +14,3 @@ // miniMAL | ||
| ast.some((a,i) => a == "&" ? env[ast[i+1]] = exprs.slice(i) | ||
| : (env[a] = exprs[i], false) ) | ||
| : (env[a] = exprs[i], 0)) | ||
| return env | ||
@@ -32,3 +32,3 @@ } | ||
| && ast[0] in env | ||
| && env[ast[0]]._M) { | ||
| && env[ast[0]].M) { | ||
| ast = env[ast[0]](...ast.slice(1)) | ||
@@ -52,3 +52,3 @@ } | ||
| let f = EVAL(ast[1], env) // eval regular function | ||
| f._M = 1 // mark as macro | ||
| f.M = 1 // mark as macro | ||
| return f | ||
@@ -123,4 +123,4 @@ } else if (ast[0] == "let") { // new environment with bindings | ||
| "read": (...a) => JSON.parse(a[0]), | ||
| //"slurp": (...a) => require('fs').readFileSync(a[0],'utf8'), | ||
| //"load": (...a) => EVAL(JSON.parse(E["slurp"](a[0])),E), | ||
| //"slurp": (...a) => require("fs").readFileSync(a[0],"utf8"), | ||
| //"load": (...a) => EVAL(JSON.parse(require("fs").readFileSync(a[0],"utf8")),E), | ||
@@ -127,0 +127,0 @@ "rep": (...a) => JSON.stringify(EVAL(JSON.parse(a[0]),E)) |
@@ -1,1 +0,1 @@ | ||
| for(_='],},["|]|{ifz",qq["Z"}YY["WZfnZVVaWUWzZTVaTRndQq"LLeQKfirHnthG!0DY"CstBliB@pr-@*;Array:!19or8La7V&76Lxs5get4map3con2_FIXME/2cat+/W+Z`Z)empty?(?U=q%pply$keys#Z.-aLbVdefL]]"{Cb"count`LZW;7LObject|W.2tains?B5sliceLY9,DtringBr6 "a"Z~V&5T(5YZ.LJSONszyCxnull/WH@zW.-7length"]n6WdoZ.L2solelog Y!|zZ=q1|5HW@letW@var c8e_ns=["doZ3Lb3WfnZxWaLx@6Ca>=T<>T>=LT=}9<=T>classOfVaprototypetoScallYnotUz7q9,D%,true%D,false%9,s?R=7q}9|=S-72Bruct8name];LcZ3VxWzLcTs?LxCx,"aWjoinpr- YD Y9pr0,printl1,@?VaL:is:Y7hasOwnProperty4TL-LYsetLcWdoLLcY#Va#YvalsU3VkW47Lk#7"]2sZ`q[|+W@7+6Z@W+a$W@YGL4WHBR>Z}0{G7q0}laBUG7Z-Z}1]U(R@?7T=q0|,D,9{=7q]L&K7CbZzZ>ZKY0{4Kq0{reBU7q1a$VfL&LbLfa$CfZ+ZLbq0,-1{laBLbaQDaQaQ)aQreaQ/]888/W8)8re}]';g=/[^ -"&*,-.01<-?AEFIJM-PSX[-pr-y~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='],q",^,["/]/@]]+^"ZdefZY+@Y))pr(ZbL!0KArrayH!1Gif%or$Za#"/DDfnDCC&#BZxs}get|map{conz_FIXMEWzcatV"qUU["TWTVD`D;empty?:CaT9?9=^8pply7keys6nd5st4U"3ztains?2z4ructD.-count`Zli4DTpr-*#ZObjectaLC"+/T.Property34}sliceZReflectZUG,Ktring4rB"a@Y T%DD~C&}:}UD.ZJSONs%y3xnullWTfir%T.-#length"]nBTdoD.Zzsolelog U!/%D=^1/}firTletTvar c$e_ns=["doDYnewCaZ&L3@Ydeldelete@Y{L{TfnDxTaZx)B3aY>=<)>>=Z=qG)<=>)classOfCaprototypetoScallU not9%#^G,K)8, true8K, false8G, s?Ca=#^qG/=S-#$name](-*ZcD{CxT%Zcs?Zx3x+,"aTjoin3b@Ypr- UK)UG(0+,(intl1+,)?CaZHisHU 2#hasOwnb@Y|2Z-ZU)setZcTdoZZcU 6Ca6U vals9{CkT|#Zk6#+/YzsD`^[+/VT#3b@YVBDTVa7TU nthZ|TYfir4Ca>Dq0@nth#^0q)la49nth#D-Dq1])9):Ca?#=^0/+,K,G@=#^])Z&Ze5#3bD%D>DZe5U0@|Ze5^0@+)re49#^1+@def#7CfZ&LZfa73fDVDL^0,-1@la4L+@def#5Ka5a5;a5rea5W+])$$$WT$;$re+++q]';g=/[-2-;T-Wz-}B-D#-%GHKL()YZ+@/^q]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
@@ -1,1 +0,1 @@ | ||
| for(_='return Z;ZY]=X))We(V.slicVUU1WT,rR(nQ[1]PR)KnPIVIKHinG G F"==E.asD,iCifBGstanceof @ @Array9!Q9WZ8let7{7 t=6n[0]5E5)446iQU1t[0]K,e=strGgJSON.n=[teDt[2]nt){ZVObjectfor(,ttypeof I,")=>throwelse(... : n"5parsVn.length-1B("function.creatV)P]YmGiMAL=Q){ tQ){;n9&&5G t&&t[5]._M;)t[5] nTYn} eQK{;;){B(8iQK;B(tQK,8n;def4Zr[IXVK;~HYt._M=1}74{r=r);7 tFI)t%2&&(r[I-1]XVI]K);}{`4ZI;.-2Ft?PXt:e}.e.apply(U2W}try4try{ZH}catch(C([P]R,]W} do,)K;n[]} B4H?:n[3];{fn C(IRW}YtDt=[R,I]}6iQ;B(!)Ze tT;[0]R=i(,PT}}}}}7 i=(tCK{Zr?(i=i).somVQ,e"&En?i[e+1]XrUe):(i[nXr[e],!1WC):t9?t.map( nV5CW:"Et?tFi?i]:n.(t+" not found"):t}YDsign(n||this),{js:eval,eval: tV,n),"====<<++--**//ICsa5@Iype5,newnew(5.bGd nW,delde7e 5[I],{ 5}Read5)Rep: tBy(V),nW})}';g=/[^ -3:-?AJL-OS[-~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) | ||
| for(_='return Z;ZY]=X))We(V.slicVUU1WT,rR(nQ[1]PR)KnPIVIKHinG G F"==E.asD,iCifBGstanceof 9 9Array8!Q8WZ7let6{6 t=5n[0]4E4)5iQU1t[0]K,e=JSON.n=[teDt[2]nt){ZVObjectfor(,tI,")=>throwelse(...:n " 4parsVn.length-1typeof B("function.creatV)P]YmGiMAL=Q){ tQ){;n8&&4G t&&t[4].M;)t[4]nTYn} eQK{;;){B(7iQK;B(tQK,7n;defZr[IXVK;~HYt.M=1}6{r=r);6 tFI)t%2&&(r[I-1]XVI]K);}{`ZI;.-2Ft?PXt:e}.e.apply(U2W}trytry{ZH}catch(C([P]R,]W} do,)K;n[]} BH?:n[3];{fnC(IRW}YtDt=[R,I]}5iQ;B(!)ZetT;[0]R=i(,PT}}}}}6 i=(tCK{Zr?(i=i).somVQ,e"&En?i[e+1]XrUe):(i[nXr[e],0WC):t8?t.map(nV4CW:"Et?tFi?i]:n.(t+" not found"):t}YDsign(n||this),{js:eval,eval:tV,n),"====<<++--**//ICsa 49Iype 4,new new(4.bGdnW,del de6e 4[I], { 4}Read 4)Rep:tstrGgBy(V),nW})}';g=/[^ -3:-AJL-OS[-~]/.exec(_);)with(_.split(g))_=join(shift());eval(_) |
Obfuscated code
Supply chain riskObfuscated files are intentionally packed to hide their behavior. This could be a sign of malware.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 2 instances in 1 package
AI-detected potential malware
Supply chain riskAI has identified this package as malware. This is a strong signal that the package may be malicious.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 6 instances in 1 package
991762
0.27%72
2.86%14
-51.72%18
-37.93%2255
-0.97%2
100%50
35.14%