Dzaima/APL: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
No edit summary
m (Text replacement - "</source>" to "</syntaxhighlight>")
(15 intermediate revisions by 3 users not shown)
Line 7: Line 7:
| unicode support          = full
| unicode support          = full
| released                = 2018
| released                = 2018
| developer                = [https://github.com/dzaima dzaima]
| developer                = [[dzaima]]
| latest release version  = 0.1.2 / 2019
| latest release version  = 0.1.7 / 2020-05-13
| implementation language  = [[wikipedia:Java (programming language)|Java]]
| implementation languages = [[wikipedia:Java (programming language)|Java]], [[wikipedia:Processing (programming language)|Processing]]  
| source                  = [https://github.com/dzaima/APL/tree/master/src/APL GitHub]
| source                  = [https://github.com/dzaima/APL GitHub]
| platforms                = JVM, Android
| platforms                = JVM, Android
| license                  = [[wikipedia:MIT License|MIT]]
| license                  = [[wikipedia:MIT License|MIT]]
| website                  = [https://github.com/dzaima/APL Github]
| documentation            = [https://github.com/dzaima/APL/blob/master/docs/chars.txt docs]
| documentation            = [https://github.com/dzaima/APL/blob/master/docs/chars.txt docs]
| influenced by            = [[Dyalog APL]], [[J]], [[K]]
| influenced by            = [[Dyalog APL]], [[J]], [[K]]
| run online              = [https://tio.run/#apl-dzaima TIO]
| run online              = [https://tio.run/#apl-dzaima TIO]
}}
}}
'''dzaima/APL''' is an implementation of APL in Java, created and maintained by Stack Exchange user [https://codegolf.stackexchange.com/users/59183/dzaima dzaima]. It is primarily based on [[Dyalog APL]], but handles some parts of the language more strictly and includes additional primitive functions and operators while adding dictionaries as a native datatype. It also includes [[wikipedia:Processing (programming language)|Processing]] integration.
'''dzaima/APL''' is an implementation of APL in Java, created and maintained by [[dzaima]]. It is primarily based on [[Dyalog APL]], but handles some parts of the language more strictly and includes additional primitive functions and operators while adding dictionaries as a native datatype. It also includes [[wikipedia:Processing (programming language)|Processing]] integration.


dzaima/APL adds many new primitives and extensions to existing primitives, most taken from or inspired by [[Adám Brudzewsky]]'s experimental [[Extended Dyalog APL]], for example:
dzaima/APL adds many new primitives and extensions to existing primitives, most taken from or inspired by [[Adám Brudzewsky]]'s experimental [[Extended Dyalog APL]], for example:


* <source lang=apl inline>⍮</source> [[Pair]] (<source lang=apl inline>{⍺ ⍵}</source>)
* <syntaxhighlight lang=apl inline>⍮</syntaxhighlight> [[Pair]] (<syntaxhighlight lang=apl inline>{⍺ ⍵}</syntaxhighlight>)
* <source lang=apl inline>⊇</source> [[Select]] (<source lang=apl inline>⌷⍤0 99</source>) a.k.a. "sane indexing", i.e. select major cells
* <syntaxhighlight lang=apl inline>⊇</syntaxhighlight> [[Select]] (<syntaxhighlight lang=apl inline>⌷⍤0 99</syntaxhighlight>) a.k.a. "sane indexing", i.e. select major cells
* <source lang=apl inline>⍛</source> [[Reverse Compose]] (<source lang=apl inline>{(⍺⍺ ⍺) ⍵⍵ ⍵}</source> — compare with <source lang=apl inline>∘</source> which is <source lang=apl inline>{⍺ ⍺⍺ (⍵⍵ ⍵)}</source>
* <syntaxhighlight lang=apl inline>⍛</syntaxhighlight> [[Reverse Compose]] (<syntaxhighlight lang=apl inline>{(⍺⍺ ⍺) ⍵⍵ ⍵}</syntaxhighlight> — compare with <syntaxhighlight lang=apl inline>∘</syntaxhighlight> which is <syntaxhighlight lang=apl inline>{⍺ ⍺⍺ (⍵⍵ ⍵)}</syntaxhighlight>


It also adds several unique additions from [[J]] and [[K]]:
It also adds several unique additions from [[J]] and [[K]]:


* <source lang=apl inline>⍡</source> Cumulative repeat (like <source lang=apl inline>⍣</source> but returns a list of iterations)
* <syntaxhighlight lang=apl inline>⍡</syntaxhighlight> Cumulative repeat (like <syntaxhighlight lang=apl inline>⍣</syntaxhighlight> but returns a list of iterations)
* <source lang=apl inline>⍁</source> For each diagonal (J's <source lang=apl inline>/.</source>)
* <syntaxhighlight lang=apl inline>⍁</syntaxhighlight> For each diagonal (J's <syntaxhighlight lang=apl inline>/.</syntaxhighlight>)
* <source lang=apl inline>ᐵ</source> and <source lang=apl inline>ᑈ</source> Each-left and Each-right (K's <source lang=apl inline>\:</source> and <source lang=apl inline>/:</source>)
* <syntaxhighlight lang=apl inline>ᐵ</syntaxhighlight> and <syntaxhighlight lang=apl inline>ᑈ</syntaxhighlight> Each-left and Each-right (K's <syntaxhighlight lang=apl inline>\:</syntaxhighlight> and <syntaxhighlight lang=apl inline>/:</syntaxhighlight>)


As of 2019, dzaima/APL is the only APL with a native dedicated Android app. This app wraps APL in an interface akin to that of graphic calculators.
As of 2019, this is the only APL with a native dedicated Android app. This app wraps APL in an interface akin to that of graphic calculators.
[[File:Dzaima-APL Andoid App.png|thumb|center|dzaima/APL Android App]]
[[File:Dzaima-APL Andoid App.png|thumb|center|dzaima/APL Android App]]
== External Links ==
== External Links ==
Line 40: Line 39:
* [https://github.com/dzaima/APL/tree/master/AndroidIDE Android App]
* [https://github.com/dzaima/APL/tree/master/AndroidIDE Android App]


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

Revision as of 22:10, 10 September 2022

dzaima/APL is an implementation of APL in Java, created and maintained by dzaima. It is primarily based on Dyalog APL, but handles some parts of the language more strictly and includes additional primitive functions and operators while adding dictionaries as a native datatype. It also includes Processing integration.

dzaima/APL adds many new primitives and extensions to existing primitives, most taken from or inspired by Adám Brudzewsky's experimental Extended Dyalog APL, for example:

  • Pair ({⍺ ⍵})
  • Select (⌷⍤0 99) a.k.a. "sane indexing", i.e. select major cells
  • Reverse Compose ({(⍺⍺ ⍺) ⍵⍵ ⍵} — compare with which is {⍺ ⍺⍺ (⍵⍵ ⍵)}

It also adds several unique additions from J and K:

  • Cumulative repeat (like but returns a list of iterations)
  • For each diagonal (J's /.)
  • and Each-left and Each-right (K's \: and /:)

As of 2019, this is the only APL with a native dedicated Android app. This app wraps APL in an interface akin to that of graphic calculators.

dzaima/APL Android App

External Links


APL dialects [edit]
Maintained APL+WinAPL2APL64APL\ivApletteAprilCo-dfnsDyalog APLDyalog APL Visiondzaima/APLGNU APLKapNARS2000Pometo
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