54
edits
m (Text replacement - "Category:APL dialects" to "Category:APL dialectsCategory:Nested array languages") |
(Link removed) |
||
(20 intermediate revisions by 6 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]] | ||
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 | 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 | |||
* [http://archive.vector.org.uk/art10501160 ''Compiling APL to JavaScript''] article in the [[Vector | == Features == | ||
* [https:// | |||
ngn/apl partially supports some of the core language of [[Dyalog APL 14.0]]: | |||
* [[dfn]]s (<syntaxhighlight lang=apl inline>{⍺ ⍵}</syntaxhighlight>) | |||
* [[nested array]]s | |||
* [[complex number]]s (<syntaxhighlight lang=apl inline>1j2</syntaxhighlight>) | |||
* [[Function train|forks and atops]] | |||
* [[Multiple assignment|strand assignment]] (<syntaxhighlight lang=apl inline>(a b)←c</syntaxhighlight>) | |||
* [[indexed assignment]] (<syntaxhighlight lang=apl inline>a[b]←c</syntaxhighlight>) | |||
* [[dop|user-defined operators]] (<syntaxhighlight lang=apl inline>{⍺⍺ ⍵⍵}</syntaxhighlight>), using the <syntaxhighlight lang=apl inline>⍶</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍹</syntaxhighlight> glyphs in place of Dyalog's <syntaxhighlight lang=apl inline>⍺⍺</syntaxhighlight> and <syntaxhighlight lang=apl inline>⍵⍵</syntaxhighlight>. | |||
The following features of Dyalog APL are not supported: | |||
* <syntaxhighlight lang=apl inline>!</syntaxhighlight> does not work with negative or complex operands. | |||
* [[Where]] (<syntaxhighlight lang=apl inline>⍸</syntaxhighlight>) | |||
* [[Over]] (<syntaxhighlight lang=apl inline>⍥</syntaxhighlight>) | |||
* [[Atop]] (<syntaxhighlight lang=apl inline>⍤</syntaxhighlight>) | |||
* [[Nest]] (<syntaxhighlight lang=apl inline>⊆</syntaxhighlight>) | |||
* [[Partitioned enclose]] (<syntaxhighlight lang=apl inline>⊆</syntaxhighlight>) | |||
* [[At]] (<syntaxhighlight lang=apl inline>@</syntaxhighlight>) | |||
* [[Stencil]] (<syntaxhighlight lang=apl inline>⌺</syntaxhighlight>) | |||
* [[Unique mask]] (<syntaxhighlight lang=apl inline>≠</syntaxhighlight>) | |||
* [[Key]] (<syntaxhighlight lang=apl inline>⌸</syntaxhighlight>) | |||
* [[Rank (operator)|Rank (operator]] (<syntaxhighlight lang=apl inline>⍤</syntaxhighlight>) | |||
* [[tradfn]]s (<syntaxhighlight lang=apl inline>∇R←X f Y</syntaxhighlight>) | |||
* non-zero [[index origin]] (<syntaxhighlight lang=apl inline>⎕IO←1</syntaxhighlight>) | |||
* [[comparison tolerance]] (<syntaxhighlight lang=apl inline>⎕CT</syntaxhighlight>) | |||
* [[prototype]]s (it always uses zero as fill) | |||
* [[modified assignment]] (<syntaxhighlight lang=apl inline>x+←1</syntaxhighlight>) | |||
* [[keyword]]s (<syntaxhighlight lang=apl inline>:If</syntaxhighlight>) | |||
* [[object-oriented programming]] | |||
* [[namespace]]s. | |||
* inverses. | |||
It extends Dyalog APL with: | |||
* [[Infinity|infinities]] (<syntaxhighlight lang=apl inline>¯</syntaxhighlight> or <syntaxhighlight lang=apl inline>∞</syntaxhighlight>) | |||
* the identity element operator (<syntaxhighlight lang=apl inline>⍁</syntaxhighlight>) | |||
* exceptions (<syntaxhighlight lang=apl inline>↗</syntaxhighlight>) | |||
== External links == | |||
* [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://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:IR compilers]] | |||
{{APL dialects}}[[Category:APL dialects]][[Category:Nested array languages]][[Category: |