A+: Difference between revisions

Jump to navigation Jump to search
7,348 bytes added ,  22:16, 10 September 2022
m
Text replacement - "</source>" to "</syntaxhighlight>"
Miraheze>Adám Brudzewsky
(Created page with "{{Infobox array language | array model = flat | index origin = 0 or 1 | function styles = tradfn, tacit | numeri...")
 
m (Text replacement - "</source>" to "</syntaxhighlight>")
(25 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Infobox array language
{{Infobox array language
| array model              = [[flat array model|flat]]
| array model              = [[flat array model|flat]] with [[box]]es
| index origin            = 0 or 1
| index origin            = 0
| function styles          = [[tradfn]], [[tacit]]
| function styles          = [[Defined function|defined]], [[tacit]]
| numeric types            = ints, floats
| numeric types            = ints, floats
| unicode support          = no
| unicode support          = no
Line 8: Line 8:
| developer                = [[Arthur Whitney]]
| developer                = [[Arthur Whitney]]
| latest release version  = 4.22 (unversioned) / 2014
| latest release version  = 4.22 (unversioned) / 2014
| implementation language  = [https://en.wikipedia.org/wiki/C%2B%2B C++]
| implementation language  = [[wikipedia:C++|C++]]
| source                  = [https://github.com/PlanetAPL/a-plus GitHub]
| platforms                = x86, x86_64, IBM POWER, IA64, z/Architecture,  
| platforms                = x86, x86_64, IBM POWER, IA64, z/Architecture,  
| operating systems        = Windows, Linux, macOS, AIX, IRIX, BSD, Solaris, Tru64
| operating systems        = Windows, Linux, macOS, AIX, IRIX, BSD, Solaris, Tru64
| license                  = [https://en.wikipedia.org/wiki/GNU_General_Public_License GNU GPL]
| license                  = [[wikipedia:GNU_General_Public_License|GNU GPL]]
| website                  = [http://www.aplusdev.org/index.html aplusdev.org]
| website                  = [http://www.aplusdev.org/index.html aplusdev.org]
| download                = [http://www.aplusdev.org/Download/index.html aplusdev.org/Download]
| download                = [http://www.aplusdev.org/Download/index.html aplusdev.org/Download]
Line 17: Line 18:
| documentation            = [https://github.com/PlanetAPL/a-plus/tree/master/docs GitHub]
| documentation            = [https://github.com/PlanetAPL/a-plus/tree/master/docs GitHub]
| influenced by            = [[A]]
| influenced by            = [[A]]
| influenced              = [[K]], [[J]]
| influenced              = [[K]], [[J]], [[BQN]]
}}
}}
'''A+''' is an extension of the A language. A was created in 1985 by [[Arthur Whitney]], then of [[Morgan Stanley]]. At the time, various departments had a significant investment in APL applications and talent, APL being a language well-suited to the manipulation of large arrays of numbers. As technology was moving from the mainframe to distributed systems, there was a search for a suitable APL implementation to run on SunOS, the distributed platform of the period, and this prompted Whitney to create A as a statically typed dialect of APL with various novelties like symbols as a [[simple scalar]] type and the [[Rank operator]].
:''This page is about the Morgan Stanley dialect. For the project based on [[APL 90 (dialect)]] and presented at [[APL90]], which replaced functions with first-class blocks, see [[A+ (Girardot)]].''
 
'''A+''' is an extension of the [[A]] language. A was created in 1985 by [[Arthur Whitney]], then of [[wikipedia:Morgan Stanley|Morgan Stanley]]. At the time, various departments had a significant investment in APL applications and talent, APL being a language well-suited to the manipulation of large arrays of numbers. As technology was moving from the mainframe to distributed systems, there was a search for a suitable APL implementation to run on SunOS, the distributed platform of the period, and this prompted Whitney to create A as a statically typed dialect of APL with various novelties like symbols as a [[simple scalar]] type and the [[Rank operator]].


Over the course of the next few years, various extensions were made to the language, culminating in A+ in 1988, with "+" referring to the graphical user interface. While an A+ development group was formally in 1992, presented the very first version of [[K]] that very same year, and by 1994, K became the official successor of A+. In 2001, the source code was made public, and various volunteers took over development until 2008.  From then until 2014 it was maintained by Robert Lefkowitz.
Over the course of the next few years, various extensions were made to the language, culminating in A+ in 1988, with "+" referring to the graphical user interface. While an A+ development group was formally in 1992, presented the very first version of [[K]] that very same year, and by 1994, K became the official successor of A+. In 2001, the source code was made public, and various volunteers took over development until 2008.  From then until 2014 it was maintained by Robert Lefkowitz.
== Primitives ==
{|class=wikitable
! Glyph                                !! Dyadic                                        !! Monadic
|-
| <syntaxhighlight lang=apl inline>+</syntaxhighlight>  || [[Add]]                                      || [[Conjugate|Identity]]
|-
| <syntaxhighlight lang=apl inline>-</syntaxhighlight>  || [[Subtract]]                                  || [[Negate]]
|-
| <syntaxhighlight lang=apl inline>×</syntaxhighlight>  || [[Multiply]]                                  || [[Sign]]
|-
| <syntaxhighlight lang=apl inline>÷</syntaxhighlight>  || [[Divide]]                                    || [[Reciprocal]]
|-
| <syntaxhighlight lang=apl inline>*</syntaxhighlight>  || [[Power]]                                    || [[Exponential]]
|-
| <syntaxhighlight lang=apl inline>⍟</syntaxhighlight>  || [[Log]]                                      || [[Natural log]]
|-
| <syntaxhighlight lang=apl inline>|</syntaxhighlight>  || [[Residue]]                                  || [[Absolute value]]
|-
| <syntaxhighlight lang=apl inline>⊥</syntaxhighlight>  || [[Decode]]                                    || Pack
|-
| <syntaxhighlight lang=apl inline>⊤</syntaxhighlight>  || [[Encode]]                                    || Unpack
|-
| <syntaxhighlight lang=apl inline>?</syntaxhighlight>  || [[Deal]]                                      || [[Roll]]
|-
| <syntaxhighlight lang=apl inline>○</syntaxhighlight>  || [[Circle function|Circle]] (sin, cos, ...)    || [[Pi times]]
|-
| <syntaxhighlight lang=apl inline>⌹</syntaxhighlight>  || [[Solve]]                                    || [[Matrix Inverse]]
|-
| <syntaxhighlight lang=apl inline>⌈</syntaxhighlight>  || [[Max]]                                      || [[Ceiling]]
|-
| <syntaxhighlight lang=apl inline>⌊</syntaxhighlight>  || [[Min]]                                      || [[Floor]]
|-
| <syntaxhighlight lang=apl inline><</syntaxhighlight>  || [[Less than]]                                || [[Enclose]]
|-
| <syntaxhighlight lang=apl inline>≤</syntaxhighlight>  || [[Less than or Equal to]]                    ||
|-
| <syntaxhighlight lang=apl inline>=</syntaxhighlight>  || [[Equal to]]                                  ||
|-
| <syntaxhighlight lang=apl inline>></syntaxhighlight>  || [[Greater than]]                              || [[Disclose]]
|-
| <syntaxhighlight lang=apl inline>≥</syntaxhighlight>  || [[Greater than or Equal to]]                  ||
|-
| <syntaxhighlight lang=apl inline>≠</syntaxhighlight>  || [[Not equal to]]                              ||
|-
| <syntaxhighlight lang=apl inline>⍋</syntaxhighlight>  || [[Bins]]                                      || [[Grade up]]
|-
| <syntaxhighlight lang=apl inline>⍒</syntaxhighlight>  ||                                              || [[Grade down]]
|-
| <syntaxhighlight lang=apl inline>≡</syntaxhighlight>  || [[Match]]                                    || [[Depth]]
|-
| <syntaxhighlight lang=apl inline>⍳</syntaxhighlight>  || [[Index Of|Find]]                                      || [[Interval]]
|-
| <syntaxhighlight lang=apl inline>∊</syntaxhighlight>  || [[Member]]                                    || [[Rake]] (like [[Enlist]])
|-
| <syntaxhighlight lang=apl inline>^</syntaxhighlight>  || [[And]]                                      || Stop
|-
| <syntaxhighlight lang=apl inline>∨</syntaxhighlight>  || [[Or]] or Cast                                || [[Type]]
|-
| <syntaxhighlight lang=apl inline>⍕</syntaxhighlight>  || [[Format]]                                    || [[Default Format]]
|-
| <syntaxhighlight lang=apl inline>⍎</syntaxhighlight>  || Execute in Context or Protected Execute      || [[Execute]]
|-
| <syntaxhighlight lang=apl inline>%</syntaxhighlight>  || Value in Context                              || Value (of a symbol)
|-
| <syntaxhighlight lang=apl inline>←</syntaxhighlight>  || [[Assignment]] or [[Selective Assignment]]    || Result (returns from functions)
|-
| <syntaxhighlight lang=apl inline>⊃</syntaxhighlight>  || [[Pick]]                                      || [[Raze]]
|-
| <syntaxhighlight lang=apl inline>#</syntaxhighlight>  || [[Choose]]                                    || [[Count]]
|-
| <syntaxhighlight lang=apl inline>[;]</syntaxhighlight> ||colspan=2| [[Bracket Indexing]] (varying number of arguments)
|-
| <syntaxhighlight lang=apl inline>↑</syntaxhighlight>  || [[Take]]                                      || [[Signal]]
|-
| <syntaxhighlight lang=apl inline>↓</syntaxhighlight>  || [[Drop]]                                      || Print
|-
| <syntaxhighlight lang=apl inline>⌽</syntaxhighlight>  || [[Rotate]]                                    || [[Reverse]]
|-
| <syntaxhighlight lang=apl inline>⍉</syntaxhighlight>  || [[Dyadic transpose|Transpose Axes]]          || [[Transpose]]
|-
| <syntaxhighlight lang=apl inline>!</syntaxhighlight>  || [[Restructure]]                              || [[Item Ravel]]
|-
| <syntaxhighlight lang=apl inline>⊂</syntaxhighlight>  || Partition (a little like [[Split]])          || Partition Count
|-
| <syntaxhighlight lang=apl inline>⍴</syntaxhighlight>  || [[Reshape]]                                  || [[Shape]]
|-
| <syntaxhighlight lang=apl inline>⊣</syntaxhighlight>  || [[Left]]                                      || Null (returns <syntaxhighlight lang=apl inline>()</syntaxhighlight>)
|-
| <syntaxhighlight lang=apl inline>⊢</syntaxhighlight>  ||                                              || [[Right]]
|-
| <syntaxhighlight lang=apl inline>∪</syntaxhighlight>  || Combine Symbols                              || Separate Symbols
|-
| <syntaxhighlight lang=apl inline>,</syntaxhighlight>  || [[Catenate]]                                  || [[Ravel]]
|-
| <syntaxhighlight lang=apl inline>~</syntaxhighlight>  || [[Laminate]]                                  || [[Not]]
|-
| <syntaxhighlight lang=apl inline>/</syntaxhighlight>  || [[Replicate]]                                || [[Reduce]] (+ × ⌈ ⌊ ∧ ∨)
|-
| <syntaxhighlight lang=apl inline>\</syntaxhighlight>  || [[Expand]]                                    || [[Scan]] (+ × ⌈ ⌊ ∧ ∨)
|-
| <syntaxhighlight lang=apl inline>.</syntaxhighlight>  || [[Inner Product]] (+.×  ⌈.+  ⌊.+)          ||
|-
| <syntaxhighlight lang=apl inline>∘.</syntaxhighlight>  || [[Outer Product]] (+ - × ÷ | ⌈ ⌊ < ≤ = ≥ > ≠) ||
|-
| <syntaxhighlight lang=apl inline>@</syntaxhighlight>  || [[Rank operator|Rank]]                        ||
|-
| <syntaxhighlight lang=apl inline>¨</syntaxhighlight>  ||                                              || [[Each]] or Apply
|-
| <syntaxhighlight lang=apl inline>⍨</syntaxhighlight>  ||                                              || Bitwise
|}
== External links ==
* [[wikipedia:A+ (programming language)|A+]]
{{APL dialects}}[[Category:APL dialects]][[Category:Flat array languages]][[Category:Leading axis languages]]

Navigation menu