Ngn/apl: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
m (→‎External link: Correct internal wiki link)
No edit summary
Line 10: Line 10:
| latest release version  = 2018 (unversioned)
| latest release version  = 2018 (unversioned)
| implementation language  = [[wikipedia:Javascript|Javascript]]
| implementation language  = [[wikipedia:Javascript|Javascript]]
| source                  = [https://gitlab.com/n9n/apl/blob/master/apl.js GitLab]
| 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://gitlab.com/n9n/apl gitlab.com/n9n/apl]
| website                  = [https://github.com/abrudz/ngn-apl/ github.com/abrudz/ngn-apl]
| influenced by            = [[Dyalog APL]]
| influenced by            = [[Dyalog APL]]
| run online              = [https://repl.it/languages/APL REPL]
| 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''' 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 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 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://n9n.gitlab.io/apl/web demo interface]]]
[[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 journal]]
* [http://archive.vector.org.uk/art10501160 ''Compiling APL to JavaScript''] article in the [[Vector journal]]
* [https://repl.it/languages/APL ngn/apl on REPL]
* [https://repl.it/languages/APL ngn/apl on REPL]
* [https://tio.run/#apl-ngn ngn/APL on Try It Online]
* [https://tio.run/#apl-ngn ngn/APL on Try It Online]
* [https://n9n.gitlab.io/apl/web Online demo]
* [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://gitlab.com/n9n/apl Source code]
* [https://github.com/abrudz/ngn-apl/ Source code]


{{APL dialects}}[[Category:APL dialects]][[Category:Nested array languages]][[Category:Leading axis languages]][[Category:Languages with tacit programming]][[Category:Compilers]]
{{APL dialects}}[[Category:APL dialects]][[Category:Nested array languages]][[Category:Leading axis languages]][[Category:Languages with tacit programming]][[Category:Compilers]]

Revision as of 12:45, 27 December 2020

ngn/apl is an APL bytecode compiler and interpreter by Nick Nickolov. Because it is implemented in Javascript, it can be run in Node.js or any modern browser.

ngn/apl supports most of the core language of Dyalog APL 14.0,: dfns ({⍺ ⍵}), nested arrays, complex numbers (1j2), forks and atops, strand assignment ((a b)←c), indexed assignment (a[b]←c), and user-defined operators ({⍺⍺ ⍵⍵}), but does not support Key (), Rank (operator () tradfns (∇R←X f Y), non-zero index origin (⎕IO←1), comparison tolerance (⎕CT), prototypes (it always uses zero as fill), modified assignment (x+←1), keywords (:If), object-oriented programming, or namespaces. It extends Dyalog APL with infinities (¯ or ) and a few additoinal primitives.

External link


APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLDyalog APL Visiondzaima/APLGNU APLKapNARS2000PometoTinyAPL
Historical A Programming LanguageA+ (A) ∙ APL#APL2CAPL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXExtended Dyalog APLIverson notationIVSYS/7090NARSngn/aplopenAPLOperators and FunctionsPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyK (Goal, Klong, Q) ∙ KamilaLispLang5LilNialRADUiua
Overviews Comparison of APL dialectsTimeline of array languagesTimeline of influential array languagesFamily tree of array languages