4,505
edits
No edit summary |
(add demo) |
||
Line 1: | Line 1: | ||
{{DISPLAYTITLE:ngn/apl}} | {{DISPLAYTITLE:ngn/apl}}{{Infobox array language | ||
{{Infobox array language | |||
| title = ngn/apl | | title = ngn/apl | ||
| array model = [[nested array model|nested]] | | array model = [[nested array model|nested]] | ||
Line 18: | Line 17: | ||
| run online = [https://repl.it/languages/APL REPL] | | run online = [https://repl.it/languages/APL REPL] | ||
}} | }} | ||
An APL interpreter written Nick Nickolov in JavaScript, making it run in a under Node.js or in any modern browser. | An APL interpreter written Nick Nickolov in JavaScript, making it run in a under Node.js or in any modern browser. | ||
ngn/apl supports most primitives, [[dfn]]s (<source lang=apl inline>{⍺ ⍵}</source>), [[nested array]]s, [[complex number]]s (<source lang=apl inline>1j2</source>), [[Infinity|infinities]] (<source lang=apl inline>¯</source> or <source lang=apl inline>∞</source>), [[Function train|forks and atops]], [[Multiple assignment|strand assignment]] (<source lang=apl inline>(a b)←c</source>), [[indexed assignment]] (<source lang=apl inline>a[b]←c</source>), [[dop|user-defined operators]] (<source lang=apl inline>{⍺⍺ ⍵⍵}</source>), but does not support [[tradfn]]s (<source lang=apl inline>∇R←X f Y</source>), non-zero [[index origin]] (<source lang=apl inline>⎕IO</source>), [[comparison tolerance]] (<source lang=apl inline>⎕CT</source>), [[prototype]]s, [[modified assignment]] (<source lang=apl inline>x+←1</source>), [[keyword]]s (<source lang=apl inline>:If</source>), [[object-oriented programming]], [[namespace]]s. | ngn/apl supports most primitives, [[dfn]]s (<source lang=apl inline>{⍺ ⍵}</source>), [[nested array]]s, [[complex number]]s (<source lang=apl inline>1j2</source>), [[Infinity|infinities]] (<source lang=apl inline>¯</source> or <source lang=apl inline>∞</source>), [[Function train|forks and atops]], [[Multiple assignment|strand assignment]] (<source lang=apl inline>(a b)←c</source>), [[indexed assignment]] (<source lang=apl inline>a[b]←c</source>), [[dop|user-defined operators]] (<source lang=apl inline>{⍺⍺ ⍵⍵}</source>), but does not support [[tradfn]]s (<source lang=apl inline>∇R←X f Y</source>), non-zero [[index origin]] (<source lang=apl inline>⎕IO</source>), [[comparison tolerance]] (<source lang=apl inline>⎕CT</source>), [[prototype]]s, [[modified assignment]] (<source lang=apl inline>x+←1</source>), [[keyword]]s (<source lang=apl inline>:If</source>), [[object-oriented programming]], [[namespace]]s. | ||
[[File:Ngn/apl|center|thumb|ngn/apl's demo interface]] | |||
== External link == | == External link == | ||
* [http://archive.vector.org.uk/art10501160 ''Compiling APL to JavaScript''] article in the [[Vector Journal]] | * [http://archive.vector.org.uk/art10501160 ''Compiling APL to JavaScript''] article in the [[Vector Journal]] |