Difference between revisions of "Ngn/apl"

From APL Wiki
Jump to navigation Jump to search
m (Text replacement - "Category:Compilers" to "Category:Bytecode compilers")
m
 
Line 20: Line 20:
 
'''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 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.
+
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.
  
 
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>
 
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>

Latest revision as of 12:10, 3 August 2021

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 (RX f Y), non-zero index origin (⎕IO1), 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.

On December 27, 2020, Nickolov announced that he would discard his implementation.[1] Soon after, Adám Brudzewsky took up the mantle of hosting the source and online demo.[2]

External link

References

  1. Nickolov, N. "ngn". Announcement. APL Orchard. Stack Exchange chat.
  2. Brudzewsky, A. "Adám". Announcement. APL Orchard. Stack Exchange chat.
APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLdzaima/APLExtended Dyalog APLGNU APLKAPNARS2000Pometo
Historical A Programming LanguageA+ (A) ∙ APL#APL\360APL/700APL\1130APL\3000APL.68000APL*PLUSAPL.jlAPL.SVAPLXIverson notationIVSYS/7090NARSngn/aplopenAPLPATRowanSAXSHARP APLRationalized APLVisualAPL (APLNext) ∙ VS APLYork APL
Derivatives AHPLBQNCoSyELIGleeIIvyJJellyJellyfishK (Q, KDB+) ∙ NialRAD
Overviews Timeline of array languagesTimeline of influential array languagesFamily tree of array languages