TryAPL: Difference between revisions
Jump to navigation
Jump to search
Master Quiz (talk | contribs) (→API) |
|||
Line 58: | Line 58: | ||
onload = (_ => alert(eval(responseText)[3].join("\n") + "\n")) | onload = (_ => alert(eval(responseText)[3].join("\n") + "\n")) | ||
} | } | ||
</source> | |||
This is a function that uses Fetch API to send a request given as input a string code. | |||
<source lang=js> | |||
async function evaluateAPL(code) { | |||
const res = await fetch("https://tryapl.org/Exec", { | |||
method: 'POST', | |||
headers: { 'Content-Type': 'application/json; charset=utf-8' }, | |||
body: JSON.stringify(['', 0, '', code]), | |||
}); | |||
const data = await res.json(); // data contains the server response | |||
return data[3]; // return the output of the function | |||
} | |||
// To call the function you must use an async/await statement. | |||
(async () => { | |||
let resultSum = await evaluateAPL(`2+2`); | |||
let reshape = (await evaluateAPL(`2 2⍴⍳${resultSum}`)) | |||
.map(row => row.split` `.map(x => +x)); | |||
let sumReduce = (await evaluateAPL(`+/ (↑⍣≡0∘⎕JSON) '${JSON.stringify(reshape)}'`)) | |||
.map(row => row.split` `.map(x => +x)); | |||
console.log(sumReduce); | |||
})(); | |||
</source> | |||
If you want to load a namespace containing some functions, you have to change state, size and hash variables. To have these parameters just go on https://tryapl.org/ [Developer Tools > Network]. Here, after typing on TryAPL <source lang="js" inline>increment ← 1∘+</source>, will appear a file named Exec: in the Response tab there will be a JSON containing the three values. | |||
<source lang="js"> | |||
let state = 'c-ocK2UHbD6oBCo<$(l+5DX+5l%hycQBgoav5N>QHY|XESU^xIb|oSjO|?X0LNtOHO=4n-(R6#oE_My}-g`Iy<?ZtvR#CI(eCO`od3$GPXJ%hfzNIR8l+&V_owJ?9ysT%MiVq7d?&(<aep5a3uIjnR6YWUVt}B}AM3%f?-)R}8CL8ZJUK>n#e`9{2N>TADRVAooq^NXV9n<fpXmNIAVVFavQvRm#>iV;BdD^dfm2ul@(Lw9TT3@e{G3I#XPRhwP1nK)xFX{hj-u}gTt5WKyQhr}rzU)iJYpxrwzD`y5S9@;;T^-XrWSi>Pt7j&{QX6LlRMXzILF=P3%A=vHQb`o6&bd6wD6TUQ!+9*?5Rbk{KtJ@yfa0~JR3efv2+2snU<|=f$ofr#tg{RZ!*GniNa;^|WEsyA)RtQG??bGMdZ-UyG?3?opE9n;0PX$fF?S1yZkR9EGEQ>Mh|SRgEzt_C(FSc1f_4Z+dxRkz9U!m26C%(VT_9Vv8@fZbVGs1w=2GVQ5tbuU+8Dzs;%cnH25iJ;6krRsVjH$&2X<jM3T6Ir00(ghNAMUYa1mE=9k(zVi<#iDGJeMGN8gJ$Ux~F?hxIaN<Tnv_VlVdNFp6*#$8a1caSEq#24`^&=Wzj-a2Z!{4ZTnYO{w3T7)%V5HN&$6$+{snA@(8Ggga_+?S(toC-=%)C7;f{<2aw@tkevoab3XT^py3?xfLw<oukwumqnZa4|vKtKt9IM))?Nh4!I{45eP*Hf-sBU#SjDFEb~hYm;Hc5#L^yz8?@cTZQO-?Dri<tsDY($<QZ*Y4SNL2hC&s%!57{zLoiMEa32p4jfe7nq%Osm5gW-qp_3KFT$xAmQ+degh$8PnE=u-2=3yabl8;8bt8p(Be-~VI-vux4M!k9)EXtHOGcRj-;C{I+`}PM}AFS~E-KF2GUR3)_pStzx`!;Ck=O1u&)x5m?#b=r|Z_%<<>o#pe+J&|c3-8deQ$*)3UAuLU?9nr4?!61PmtMDf!@km+4vufVUAf9TPF1TpySTblui;+P!*le?u}fke+-TY)@Zr0)4qb`9K0Y=sK5IgD--Jp1`VSbGm^A3U<dnffCVw|&XlmN~=^uRf(Z|C+nL2Iyj8A9I8vfbr&qsVQa(CgVJ>Tv<d+z+jsEpUf-1_nMPr=K-|LyX^umAdc!OmT|^Z)pBQ{!<f{<-<<GONsjjdQ-*uzuURt$pr1-uz_Zj_q~Uto`{1n`;#x9XtK+k)p%LPn<e=^cU0j*v9F3|67(m`tSQhGxfiY{{TCxArt'; | |||
let size = 2090; | |||
let hash = 'b#I;?EZD=8s=YfFKk=g-u;6Uc`dwiu3Val5Gt`%rAhCWd4~6Z_WwqIp<R`FEoA*lr*Z0=uC*HY#_2JbY'; | |||
async function evaluateAPL(code) { | |||
const res = await fetch("https://tryapl.org/Exec", { | |||
method: 'POST', | |||
headers: { 'Content-Type': 'application/json; charset=utf-8' }, | |||
body: JSON.stringify([state, size, hash, code]), | |||
}); | |||
const data = await res.json(); | |||
return data[3]; | |||
} | |||
(async () => { | |||
let result = await evaluateAPL(`increment 27`); | |||
console.log(result); | |||
})(); | |||
</source> | </source> | ||