"apply": ()=>stack.push(stack.pop()(stack.pop())), "sub": [x=>y=>+y-x,"apply","apply"], "add": [x=>y=>+y+(+x),"apply","apply"], "div": [x=>y=>y/x,"apply","apply"], "mul": [x=>y=>y*x,"apply","apply"], "sto": ()=>vars[stack.pop()]=stack.pop(), "rcl": [x=>vars[x],"apply"], "define": ()=>dictionary[stack.pop()]=[stack.pop()], "<0": [x=>x<0?1:0, "apply"], "dup": [ 1, "sto", 1, "rcl", 1, "rcl"], "drop": [ 1, "sto" ], "swap": [ 1, "sto", 2, "sto", 1, "rcl", 2, "rcl" ], "over": [ 1, "sto", 2, "sto", 2, "rcl", 1, "rcl", 2, "rcl" ], "2dup": [ "over", "over" ], "rot": [1, "sto", 2, "sto", 3, "sto", 2, "rcl", 1, "rcl", 3, "rcl" ], "rrot": ["rot", "rot"], "-rot": ["rrot"], "tuck": [1, "sto", 2, "sto", 1, "rcl", 2, "rcl", 1, "rcl"], "say": ()=>_feedback.innerHTML+=stack.pop()+"<br>", "clearstack": ()=>stack=[], "defs": [ ()=>stack.push(stack.pop()*stack.pop()), "mul1", "sto", [0,"swap","sub", "sub"], "add1", "sto", [1, "swap", "div", "div"], "mul2", "sto", ], "ifte": [x=>y=>z=>z!=0?y:x,"apply","apply","apply"], "exec":()=>prog=[...(stack.pop()),...prog], "ifelse": ["ifte","exec"], "if":[[],"ifelse"], "main1": [ "clearstack", "defs", 44, 3, "*", 1, "+", "say" ], "main2": [0,["true","say"],["FALSE","say"],"ifelse"], "sin": [Math.sin,"apply"], "main3": [1 , "sin", "say"], main4:[1,2,3,"hello world","say","add","add","say","clearstack"], eps: [ 0.000001 ], nderiv: [ "2dup", "2dup", "swap", "eps", "add", "swap", "exec", "rrot", "swap", "eps", "sub", "swap", "exec", "sub", 2, "div", "eps", "div" ], "horner": [ "add", "over", "mul", ], "hornerend": [ "add", "swap", "drop"], "hornerstart": [0], "f": ["hornerstart", 1, "horner", -1, "horner", 1, "horner", 1, "hornerend"], "g": [ x=>x**3-x**2+x+1, "apply"], main_nderiv: [ "clearstack", 1.5, ["f"] , "nderiv" , "say" ] , "svg": ["<svg width=\"200\" height=\"200\" preserveAspectRatio=\"none\" viewbox=\"0 0 100 100\" style=\"transform:scale(1,-1);border:1px solid red\"><path id=\"path1\" d=\"\" stroke=\"black\" stroke-width=\"1\" fill=\"none\" vector-effect=\"non-scaling-stroke\" /></svg>","say"], "move": ()=>document.querySelector("#path1").setAttribute("d",document.querySelector("#path1").getAttribute("d")+" M "+stack.pop()+" "+stack.pop()+" "), "line": ()=>document.querySelector("#path1").setAttribute("d",document.querySelector("#path1").getAttribute("d")+" L "+stack.pop()+" "+stack.pop()+" "), "graph1": [ "2dup","over","swap","exec","swap","line","swap",1,"add","tuck",101,"sub","<0",["graph1"],"if"], "graph": [ "2dup","over","swap","exec","swap","line","swap",1,"add","tuck",101,"sub","<0",["graph"],"if"], main1:["clearstack","svg",0,0,"swap","move",0,["dup","mul",100,"div"], "graph1"], main5:["clearstack",3.14,"pi","define","pi",1,"add","say"], main:["clearstack","svg",0,0,"swap","move",0,[x=>x**2/100,"apply"], "graph"], "swap_": [x=>y=>(stack.push(x),y),"apply","apply"], "over_": [x=>y=>(stack.push(y),stack.push(x),y),"apply","apply"], "dup_": [x=>(stack.push(x),x),"apply"], "drop_": [()=>stack.pop(),"apply"], "rot_": [x=>y=>z=>(stack.push(y),stack.push(x),z),"apply","apply","apply"], "tuck_": [x=>y=>(stack.push(x),stack.push(y),x),"apply","apply"], "tuck__": ["swap_","over_"], "say_": [x=>(_feedback.innerHTML+=x+" ... ",x),"apply","drop_"], "sto_": [x=>y=>vars[x]=y,"apply","apply","drop_"], main:["clearstack",2,3,"swap_"], main:["clearstack",2,3,"over_"], main:["clearstack",42,"dup_",43,"drop_"], main:["clearstack",1,2,3,"rot_","tuck__","say_",5,"sto_","say_",5,"rcl"]
run