3,038
edits
mNo edit summary |
m (Text replacement - "Category:Compilers" to "Category:Bytecode compilers") |
||
(16 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{DISPLAYTITLE:ngn/apl}}{{Infobox array language | {{DISPLAYTITLE:ngn/apl}}{{Infobox array language | ||
| logo = [[File:Ngn-apl logo.png]] | |||
| title = ngn/apl | | title = ngn/apl | ||
| array model = [[nested array model|nested]] | | array model = [[nested array model|nested]] | ||
| index origin = 0 | | index origin = 0 | ||
| function styles = [[dfn]], [[tacit]] | | function styles = [[dfn]], [[tacit]] | ||
| numeric types = complex floats | | numeric types = [[complex]] floats | ||
| unicode support = full | | unicode support = full | ||
| released = 2011 | | released = 2011 | ||
Line 10: | Line 11: | ||
| latest release version = 2018 (unversioned) | | latest release version = 2018 (unversioned) | ||
| implementation language = [[wikipedia:Javascript|Javascript]] | | implementation language = [[wikipedia:Javascript|Javascript]] | ||
| source = [https:// | | source = [https://github.com/abrudz/ngn-apl/ GitHub] | ||
| platforms = In-browser, [[wikipedia:Node.js|Node.js]] | | platforms = In-browser, [[wikipedia:Node.js|Node.js]] | ||
| license = [[wikipedia:MIT_License|MIT]] | | license = [[wikipedia:MIT_License|MIT]] | ||
| website = [https:// | | website = [https://github.com/abrudz/ngn-apl/ github.com/abrudz/ngn-apl] | ||
| influenced by = [[Dyalog APL]] | | influenced by = [[Dyalog APL]] | ||
| run online = [https:// | | run online = [https://abrudz.github.io/ngn-apl/web/ In-browser] | ||
}} | }} | ||
'''ngn/apl''' is an APL bytecode compiler and interpreter by [[Nick Nickolov]]. Because it is implemented in [[wikipedia:Javascript|Javascript]], it can be run in [[wikipedia:Node.js|Node.js]] or any modern browser. | |||
ngn/apl supports most | ngn/apl supports most of the core language of [[Dyalog APL 14.0]],: [[dfn]]s (<source lang=apl inline>{⍺ ⍵}</source>), [[nested array]]s, [[complex number]]s (<source lang=apl inline>1j2</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>), and [[dop|user-defined operators]] (<source lang=apl inline>{⍺⍺ ⍵⍵}</source>), but does not support [[Key]] (<source lang=apl inline>⌸</source>), [[Rank (operator|Rank (operator]] (<source lang=apl inline>⍤</source>) [[tradfn]]s (<source lang=apl inline>∇R←X f Y</source>), non-zero [[index origin]] (<source lang=apl inline>⎕IO←1</source>), [[comparison tolerance]] (<source lang=apl inline>⎕CT</source>), [[prototype]]s (it always uses zero as fill), [[modified assignment]] (<source lang=apl inline>x+←1</source>), [[keyword]]s (<source lang=apl inline>:If</source>), [[object-oriented programming]], or [[namespace]]s. It extends Dyalog APL with [[Infinity|infinities]] (<source lang=apl inline>¯</source> or <source lang=apl inline>∞</source>) and a few additoinal primitives. | ||
[[File:Ngn/apl|center|thumb|ngn/apl's [https:// | |||
On December 27, 2020, Nickolov announced that he would discard his implementation.<ref>Nickolov, N. "ngn". [https://chat.stackexchange.com/transcript/message/56558504#56558504 Announcement]. [[APL Orchard]]. Stack Exchange chat.</ref> Soon after, [[Adám Brudzewsky]] took up the mantle of hosting the source and online demo.<ref>Brudzewsky, A. "Adám". [https://chat.stackexchange.com/transcript/message/56558600#56558600 Announcement]. [[APL Orchard]]. Stack Exchange chat.</ref> | |||
[[File:Ngn/apl|center|thumb|ngn/apl's [https://abrudz.github.io/ngn-apl/web/ demo interface]]] | |||
== External link == | == External link == | ||
* [http://archive.vector.org.uk/art10501160 ''Compiling APL to JavaScript''] article in the [[Vector | * [http://archive.vector.org.uk/art10501160 ''Compiling APL to JavaScript''] article in the [[Vector journal]] | ||
* [https:// | * [https://repl.it/languages/APL ngn/apl on REPL] | ||
* [https://tio.run/#apl-ngn ngn/APL on Try It Online] | |||
* [https://abrudz.github.io/ngn-apl/web/ Online demo] | |||
* [https://plj541.github.io/APL.js/ Online session] | * [https://plj541.github.io/APL.js/ Online session] | ||
* [https:// | * [https://github.com/abrudz/ngn-apl/ Source code] | ||
== References == | |||
<references/> | |||
{{APL dialects}}[[Category:APL dialects]][[Category:Nested array languages]][[Category:Leading axis languages]][[Category:Languages with tacit programming]][[Category:Bytecode compilers]] | |||
{{APL dialects}} |