APLX: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
Miraheze>Marshall
(Primitive functions table)
m (Text replacement - "</source>" to "</syntaxhighlight>")
Tags: Mobile edit Mobile web edit
(25 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Infobox array language
{{Infobox array language
| logo                    = [[File:APLX logo.png]]
| array model              = [[nested array model|nested]]
| array model              = [[nested array model|nested]]
| index origin            = 0 or 1
| index origin            = 0 or 1
| function styles          = [[tradfn]]
| function styles          = [[Defined function|defined]]
| numeric types            = floats
| numeric types            = floats
| unicode support          = no
| unicode support          = no
Line 9: Line 10:
| developer                = [[MicroAPL Ltd.]]
| developer                = [[MicroAPL Ltd.]]
| latest release version  = 5.1 / 2016
| latest release version  = 5.1 / 2016
| implementation languages = [https://en.wikipedia.org/wiki/C_(programming_language) C], [https://en.wikipedia.org/wiki/C%2B%2B C++]
| implementation languages = [[wikipedia:C_(programming_language)|C]], [[wikipedia:C++|C++]]
| platforms                = x86, x86_64
| platforms                = x86
| operating systems        = Windows, Linux, macOS
| operating systems        = Windows, Linux, macOS High Sierra and earlier
| license                  = Free / Proprietary software
| license                  = Free / Proprietary software
| website                  = [http://microapl.com/apl/ microapl.com/apl]
| website                  = [http://microapl.com/apl/ microapl.com/apl]
| forum                    = [https://www.tapatalk.com/groups/microapl/ Support forum for APLX]
| download                = [http://www.dyalog.com/aplx.htm dyalog.com/aplx.htm]
| download                = [http://www.dyalog.com/aplx.htm dyalog.com/aplx.htm]
| file ext                = .aws
| file ext                = .aws
| documentation            = [http://www.dyalog.com/aplx.htm#APLXDocs APLX Documentation]
| documentation            = [http://www.dyalog.com/aplx.htm#APLXDocs APLX Documentation]
| influenced by            = [[APL2]]
| influenced by            = [[APL/700]], [[APL.68000]], [[APL2]]
}}
}}
'''APLX''' was a cross-platform dialect of the programming language APL, created by British company [[MicroAPL Ltd.]], as a successor to their [[APL.68000]] product.
'''APLX''' was a cross-platform dialect of the programming language APL, created by British company [[MicroAPL Ltd.]], as a successor to their [[APL.68000]] product.


APLX is intended for uses such as financial planning, market research, statistics, management information, and various kinds of scientific and engineering work. APLX is based on [[IBM]]'s [[APL2]], but includes several extensions. APLX version 3 was released in April and May 2005. It is available on Microsoft Windows, Linux, and macOS. Though APLX keeps APL's extended character set, APLX is a bit more verbose, due to the prevalence of system functions with long names, and the use of structured-control keywords. The use of explicit loops is a major deviation from earlier APL versions and derivatives.
APLX is intended for uses such as financial planning, market research, statistics, management information, and various kinds of scientific and engineering work. APLX is based on [[IBM]]'s [[APL2]], but includes several extensions. It is available on Microsoft Windows, Linux, and macOS. Though APLX keeps APL's extended character set, APLX is a bit more verbose, due to the prevalence of system functions with long names, and the use of structured-control keywords. The use of explicit loops is a major deviation from earlier APL versions and derivatives.


Effective July 11, 2016, MicroAPL withdrew APLX from commercial sale. British firm [[Dyalog]], authors of [[Dyalog APL]], began hosting the APLX Archive website including the download area and documentation.
Effective July 11, 2016, MicroAPL withdrew APLX from commercial sale. British firm [[Dyalog Ltd.]], authors of [[Dyalog APL]], began hosting the APLX Archive website including the download area and documentation.


== Primitives ==
== Primitives ==
Line 30: Line 32:


{| class=wikitable
{| class=wikitable
! Glyph         !! Monadic              !! Dyadic
! Glyph                             !! Monadic              !! Axis !! Dyadic                               !! Axis
|-
|-
| <code>+</code> || [[Conjugate]]        || [[Add]]
| <syntaxhighlight lang=apl inline>+</syntaxhighlight> || [[Conjugate]]        ||      || [[Add]]                               || vec
|-
|-
| <code>-</code> || [[Negate]]            || [[Subtract]]
| <syntaxhighlight lang=apl inline>-</syntaxhighlight> || [[Negate]]            ||      || [[Subtract]]                         || vec
|-
|-
| <code>×</code> || [[Sign of]]          || [[Multiply]]
| <syntaxhighlight lang=apl inline>×</syntaxhighlight> || [[Sign of]]          ||      || [[Multiply]]                         || vec
|-
|-
| <code>÷</code> || [[Reciprocal]]        || [[Divide]]
| <syntaxhighlight lang=apl inline>÷</syntaxhighlight> || [[Reciprocal]]        ||      || [[Divide]]                           || vec
|-
|-
| <code>⌈</code> || [[Ceiling]]          || [[Maximum|Greater of]]
| <syntaxhighlight lang=apl inline>⌈</syntaxhighlight> || [[Ceiling]]          ||      || [[Maximum|Greater of]]               || vec
|-
|-
| <code>⌊</code> || [[Floor]]            || [[Minimum|Lesser of]]
| <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> || [[Floor]]            ||      || [[Minimum|Lesser of]]                 || vec
|-
|-
| <code>|</code> || [[Absolute value]]    || [[Residue]]
| <syntaxhighlight lang=apl inline>|</syntaxhighlight> || [[Absolute value]]    ||      || [[Residue]]                           || vec
|-
|-
| <code>⍳</code> || [[Iota|Index list]]   || [[Index of]]
| <syntaxhighlight lang=apl inline>⍳</syntaxhighlight> || [[Index list]]       ||      || [[Index of]]                         ||
|-
|-
| <code>?</code> || [[Roll]]              || [[Deal]]
| <syntaxhighlight lang=apl inline>?</syntaxhighlight> || [[Roll]]              ||      || [[Deal]]                             ||
|-
|-
| <code>*</code> || [[Exponential]]      || [[Power function|To the power of]]
| <syntaxhighlight lang=apl inline>*</syntaxhighlight> || [[Exponential]]      ||      || [[Power function|To the power of]]   || vec
|-
|-
| <code>⍟</code> || [[Natural log]]      || [[Logarithm|Log to the base]]
| <syntaxhighlight lang=apl inline>⍟</syntaxhighlight> || [[Natural log]]      ||      || [[Logarithm|Log to the base]]         || vec
|-
|-
| <code>○</code> || [[Pi times]]          || [[Circle function|Circular and Hyperbolic functions]]
| <syntaxhighlight lang=apl inline>○</syntaxhighlight> || [[Pi times]]          ||      || [[Circle function|Circular and Hyperbolic functions]] || vec
|-
|-
| <code>!</code> || [[Factorial]]        || [[Binomial]]
| <syntaxhighlight lang=apl inline>!</syntaxhighlight> || [[Factorial]]        ||      || [[Binomial]]                         || vec
|-
|-
| <code>⌹</code> || [[Matrix inverse]]    || [[Matrix divide]]
| <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> || [[Matrix inverse]]    ||      || [[Matrix divide]]                     ||
|-
|-
| <code><</code> ||                      || [[Less than]]
| <syntaxhighlight lang=apl inline><</syntaxhighlight> ||                      ||      || [[Less than]]                         || vec
|-
|-
| <code>≤</code> ||                      || [[Less than or equal]]
| <syntaxhighlight lang=apl inline>≤</syntaxhighlight> ||                      ||      || [[Less than or equal]]               || vec
|-
|-
| <code>=</code> ||                      || [[Equal]]
| <syntaxhighlight lang=apl inline>=</syntaxhighlight> ||                      ||      || [[Equal]]                             || vec
|-
|-
| <code>≥</code> ||                      || [[Greater than or equal]]
| <syntaxhighlight lang=apl inline>≥</syntaxhighlight> ||                      ||      || [[Greater than or equal]]             || vec
|-
|-
| <code>></code> ||                      || [[Greater than]]
| <syntaxhighlight lang=apl inline>></syntaxhighlight> ||                      ||      || [[Greater than]]                     || vec
|-
|-
| <code>≠</code> ||                      || [[Not equal]]
| <syntaxhighlight lang=apl inline>≠</syntaxhighlight> ||                      ||      || [[Not equal]]                         || vec
|-
|-
| <code>≡</code> || [[Depth]]            || [[Match]]
| <syntaxhighlight lang=apl inline>≡</syntaxhighlight> || [[Depth]]            ||      || [[Match]]                             ||
|-
|-
| <code>≢</code> ||                      || [[Not Match]]
| <syntaxhighlight lang=apl inline>≢</syntaxhighlight> ||                      ||      || [[Not Match]]                         ||
|-
|-
| <code>∊</code> || [[Enlist]]            || [[Membership]]
| <syntaxhighlight lang=apl inline>∊</syntaxhighlight> || [[Enlist]]            ||      || [[Membership]]                       ||
|-
|-
| <code>⍷</code> ||                      || [[Find]]
| <syntaxhighlight lang=apl inline>⍷</syntaxhighlight> ||                      ||      || [[Find]]                             ||
|-
|-
| <code>∪</code> || [[Unique]]            || [[Union]]
| <syntaxhighlight lang=apl inline>∪</syntaxhighlight> || [[Unique]]            ||      || [[Union]]                             ||
|-
|-
| <code>∩</code> ||                      || [[Intersection]]
| <syntaxhighlight lang=apl inline>∩</syntaxhighlight> ||                      ||      || [[Intersection]]                     ||
|-
|-
| <code>~</code> || [[Not]]              || [[Without]]
| <syntaxhighlight lang=apl inline>~</syntaxhighlight> || [[Not]]              ||      || [[Without]]                           ||
|-
|-
| <code>∨</code> ||                      || [[Or]]
| <syntaxhighlight lang=apl inline>∨</syntaxhighlight> ||                      ||      || [[Or]]                               ||
|-
|-
| <code>^</code> ||                      || [[And]]
| <syntaxhighlight lang=apl inline>^</syntaxhighlight> ||                      ||      || [[And]]                               ||
|-
|-
| <code>⍱</code> ||                      || [[Nor]]
| <syntaxhighlight lang=apl inline>⍱</syntaxhighlight> ||                      ||      || [[Nor]]                               ||
|-
|-
| <code>⍲</code> ||                      || [[Nand]]
| <syntaxhighlight lang=apl inline>⍲</syntaxhighlight> ||                      ||      || [[Nand]]                             ||
|-
|-
| <code>⍴</code> || [[Shape|Shape of]]    || [[Reshape]]
| <syntaxhighlight lang=apl inline>⍴</syntaxhighlight> || [[Shape|Shape of]]    ||      || [[Reshape]]                           ||
|-
|-
| <code>,</code> || [[Ravel]]             || [[Catenate|Catenate, Laminate]]
| <syntaxhighlight lang=apl inline>,</syntaxhighlight> || [[Ravel]]         || vec,frac || [[Catenate|Catenate, Laminate]]       ||
|-
|-
| <code>⍪</code> ||                      || [[Catenate First|1st axis catenate]]
| <syntaxhighlight lang=apl inline>⍪</syntaxhighlight> ||                      ||      || [[Catenate First|1st axis catenate]] ||
|-
|-
| <code>⌽</code> || [[Reverse]]          || [[Rotate]]
| <syntaxhighlight lang=apl inline>⌽</syntaxhighlight> || [[Reverse]]          || scal || [[Rotate]]                           || scal
|-
|-
| <code>⊖</code> ||                       || [[Rotate First|1st axis rotate]]
| <syntaxhighlight lang=apl inline>⊖</syntaxhighlight> || [[Reverse First]]    || scal || [[Rotate First|1st axis rotate]]     || scal
|-
|-
| <code>⍉</code> || [[Transpose]]         ||
| <syntaxhighlight lang=apl inline>⍉</syntaxhighlight> ||colspan=4| [[Transpose]]
|-
|-
| <code>↑</code> || [[First]]            || [[Take]]
| <syntaxhighlight lang=apl inline>↑</syntaxhighlight> || [[First]]            ||      || [[Take]]                             || vec
|-
|-
| <code>↓</code> ||                      || [[Drop]]
| <syntaxhighlight lang=apl inline>↓</syntaxhighlight> ||                      ||      || [[Drop]]                             || vec
|-
|-
| <code>⊂</code> || [[Enclose]]          || [[Partition]]
| <syntaxhighlight lang=apl inline>⊂</syntaxhighlight> || [[Enclose]]          || vec  || [[Partition]]                         || scal
|-
|-
| <code>⊃</code> || [[Mix]] ("Disclose") || [[Pick]]
| <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> || [[Disclose]]         || vec || [[Pick]]                             ||
|-
|-
| <code>⌷</code> ||                      || [[Squad Index|Index]]
| <syntaxhighlight lang=apl inline>⌷</syntaxhighlight> ||                      ||      || [[Squad Index|Index]]                 || vec
|-
|-
| <code>⍋</code> || [[Grade up]]         ||
| <syntaxhighlight lang=apl inline>⍋</syntaxhighlight> ||colspan=4| [[Grade up]]
|-
|-
| <code>⍒</code> || [[Grade down]]       ||
| <syntaxhighlight lang=apl inline>⍒</syntaxhighlight> ||colspan=4| [[Grade down]]
|-
|-
| <code>⊤</code> ||                      || [[Encode]]
| <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> ||                      ||      || [[Encode]]                           ||
|-
|-
| <code>⊥</code> ||                      || [[Decode]]
| <syntaxhighlight lang=apl inline>⊥</syntaxhighlight> ||                      ||      || [[Decode]]                           ||
|-
|-
| <code>⍺</code> ||                      || [[Picture format]]
| <syntaxhighlight lang=apl inline>⍺</syntaxhighlight> ||                      ||     || Picture format                       ||
|-
|-
| <code>⍕</code> || [[Format]]            || [[Dyadic format|Format]] by specification or by example
| <syntaxhighlight lang=apl inline>⍕</syntaxhighlight> || [[Format]]            ||      || [[Dyadic format|Format]] by specification or by example ||
|-
|-
| <code>⍎</code> ||                      || [[Execute]]
| <syntaxhighlight lang=apl inline>⍎</syntaxhighlight> ||                      ||      || [[Execute]]                           ||
|-
|-
| <code>⊣</code> || [[Stop]]              || [[Left Identity|Left]]
| <syntaxhighlight lang=apl inline>⊣</syntaxhighlight> || [[Stop]]              ||      || [[Left Identity|Left]]               ||
|-
|-
| <code>⊢</code> || [[Identity|Pass]]    || [[Right Identity|Right]]
| <syntaxhighlight lang=apl inline>⊢</syntaxhighlight> || [[Identity|Pass]]    ||      || [[Right Identity|Right]]             ||
|-
|-
| <code>/</code> ||                      || [[Compress]], [[Replicate]]
| <syntaxhighlight lang=apl inline>/</syntaxhighlight> ||                      ||      || [[Compress]], [[Replicate]]           || scal
|-
|-
| <code>⌿</code> ||                      || [[Replicate First|1st axis compress/replicate]]
| <syntaxhighlight lang=apl inline>⌿</syntaxhighlight> ||                      ||      || [[Replicate First|1st axis compress/replicate]] || scal
|-
|-
| <code>\</code> ||                      || [[Expand]]
| <syntaxhighlight lang=apl inline>\</syntaxhighlight> ||                      ||      || [[Expand]]                           || scal
|-
|-
| <code>⍀</code> ||                      || [[Expand First|1st axis expand]]
| <syntaxhighlight lang=apl inline>⍀</syntaxhighlight> ||                      ||      || [[Expand First|1st axis expand]]      || scal
|}
 
In addition, a few primitives for component file operations were taken from or inspired by [[APL/700]].
 
=== Operators ===
 
{| class=wikitable
! Glyph          !! Valence !! Monadic call                    !! Dyadic call
|-
| <syntaxhighlight lang=apl inline>/</syntaxhighlight>  || Monadic || [[Reduce]]                      || [[N-wise Reduce]]
|-
| <syntaxhighlight lang=apl inline>⌿</syntaxhighlight>  || Monadic || [[Reduce First|1st axis reduce]] || [[N-wise Reduce first]]
|-
| <syntaxhighlight lang=apl inline>\</syntaxhighlight>  || Monadic || [[Scan]]                        ||
|-
| <syntaxhighlight lang=apl inline>⍀</syntaxhighlight>  || Monadic || [[Scan First|1st axis scan]]    ||
|-
| <syntaxhighlight lang=apl inline>.</syntaxhighlight>  || Dyadic  ||                                  || [[Inner product]]
|-
| <syntaxhighlight lang=apl inline>∘.</syntaxhighlight> || Monadic ||                                  || [[Outer product]]
|-
| <syntaxhighlight lang=apl inline>¨</syntaxhighlight>  || Monadic ||colspan=2| [[Each]]
|}
|}


== External links ==
== External links ==


* [http://www.dyalog.com/aplx.htm Download APLX]
* [http://www.dyalog.com/aplx.htm APLX Archive]
* [https://dyalog.github.io/aplx/ Tools to help migrate from APLX to Dyalog APL]
* [https://dyalog.github.io/aplx/ Tools to help migrate from APLX to Dyalog APL]


{{APL programming language}}
{{APL dialects}}[[Category:APL dialects]][[Category:Nested array languages]]

Revision as of 22:25, 10 September 2022

APLX was a cross-platform dialect of the programming language APL, created by British company MicroAPL Ltd., as a successor to their APL.68000 product.

APLX is intended for uses such as financial planning, market research, statistics, management information, and various kinds of scientific and engineering work. APLX is based on IBM's APL2, but includes several extensions. It is available on Microsoft Windows, Linux, and macOS. Though APLX keeps APL's extended character set, APLX is a bit more verbose, due to the prevalence of system functions with long names, and the use of structured-control keywords. The use of explicit loops is a major deviation from earlier APL versions and derivatives.

Effective July 11, 2016, MicroAPL withdrew APLX from commercial sale. British firm Dyalog Ltd., authors of Dyalog APL, began hosting the APLX Archive website including the download area and documentation.

Primitives

Functions

Glyph Monadic Axis Dyadic Axis
+ Conjugate Add vec
- Negate Subtract vec
× Sign of Multiply vec
÷ Reciprocal Divide vec
Ceiling Greater of vec
Floor Lesser of vec
| Absolute value Residue vec
Index list Index of
? Roll Deal
* Exponential To the power of vec
Natural log Log to the base vec
Pi times Circular and Hyperbolic functions vec
! Factorial Binomial vec
Matrix inverse Matrix divide
< Less than vec
Less than or equal vec
= Equal vec
Greater than or equal vec
> Greater than vec
Not equal vec
Depth Match
Not Match
Enlist Membership
Find
Unique Union
Intersection
~ Not Without
Or
^ And
Nor
Nand
Shape of Reshape
, Ravel vec,frac Catenate, Laminate
1st axis catenate
Reverse scal Rotate scal
Reverse First scal 1st axis rotate scal
Transpose
First Take vec
Drop vec
Enclose vec Partition scal
Disclose vec Pick
Index vec
Grade up
Grade down
Encode
Decode
Picture format
Format Format by specification or by example
Execute
Stop Left
Pass Right
/ Compress, Replicate scal
1st axis compress/replicate scal
\ Expand scal
1st axis expand scal

In addition, a few primitives for component file operations were taken from or inspired by APL/700.

Operators

Glyph Valence Monadic call Dyadic call
/ Monadic Reduce N-wise Reduce
Monadic 1st axis reduce N-wise Reduce first
\ Monadic Scan
Monadic 1st axis scan
. Dyadic Inner product
∘. Monadic Outer product
¨ Monadic Each

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