A+: Difference between revisions

Jump to navigation Jump to search
6,323 bytes added ,  18:02, 8 February 2021
Change source to link to main repository, not src directory
Miraheze>Adám Brudzewsky
m (Text replacement - "{{APL programming language}}" to "{{APL dialects}}")
(Change source to link to main repository, not src directory)
(18 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 19: Line 20:
| influenced              = [[K]], [[J]]
| influenced              = [[K]], [[J]]
}}
}}
'''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.
{{APL dialects}}
 
== Primitives ==
 
{|class=wikitable
! Glyph                                !! Dyadic                                        !! Monadic
|-
| <source lang=apl inline>+</source>  || [[Add]]                                      || [[Conjugate|Identity]]
|-
| <source lang=apl inline>-</source>  || [[Subtract]]                                  || [[Negate]]
|-
| <source lang=apl inline>×</source>  || [[Multiply]]                                  || [[Sign]]
|-
| <source lang=apl inline>÷</source>  || [[Divide]]                                    || [[Reciprocal]]
|-
| <source lang=apl inline>*</source>  || [[Power]]                                    || [[Exponential]]
|-
| <source lang=apl inline>⍟</source>  || [[Log]]                                      || [[Natural log]]
|-
| <source lang=apl inline>|</source>  || [[Residue]]                                  || [[Absolute value]]
|-
| <source lang=apl inline>⊥</source>  || [[Decode]]                                    || Pack
|-
| <source lang=apl inline>⊤</source>  || [[Encode]]                                    || Unpack
|-
| <source lang=apl inline>?</source>  || [[Deal]]                                      || [[Roll]]
|-
| <source lang=apl inline>○</source>  || [[Circle function|Circle]] (sin, cos, ...)    || [[Pi times]]
|-
| <source lang=apl inline>⌹</source>  || [[Solve]]                                    || [[Matrix Inverse]]
|-
| <source lang=apl inline>⌈</source>  || [[Max]]                                      || [[Ceiling]]
|-
| <source lang=apl inline>⌊</source>  || [[Min]]                                      || [[Floor]]
|-
| <source lang=apl inline><</source>  || [[Less than]]                                || [[Enclose]]
|-
| <source lang=apl inline>≤</source>  || [[Less than or Equal to]]                    ||
|-
| <source lang=apl inline>=</source>  || [[Equal to]]                                  ||
|-
| <source lang=apl inline>></source>  || [[Greater than]]                              || [[Disclose]]
|-
| <source lang=apl inline>≥</source>  || [[Greater than or Equal to]]                  ||
|-
| <source lang=apl inline>≠</source>  || [[Not equal to]]                              ||
|-
| <source lang=apl inline>⍋</source>  || [[Bins]]                                      || [[Grade up]]
|-
| <source lang=apl inline>⍒</source>  ||                                              || [[Grade down]]
|-
| <source lang=apl inline>≡</source>  || [[Match]]                                    || [[Depth]]
|-
| <source lang=apl inline>⍳</source>  || [[Index Of|Find]]                                      || [[Interval]]
|-
| <source lang=apl inline>∊</source>  || [[Member]]                                    || [[Rake]] (like [[Enlist]])
|-
| <source lang=apl inline>^</source>  || [[And]]                                      || Stop
|-
| <source lang=apl inline>∨</source>  || [[Or]] or Cast                                || [[Type]]
|-
| <source lang=apl inline>⍕</source>  || [[Format]]                                    || [[Default Format]]
|-
| <source lang=apl inline>⍎</source>  || Execute in Context or Protected Execute      || [[Execute]]
|-
| <source lang=apl inline>%</source>  || Value in Context                              || Value (of a symbol)
|-
| <source lang=apl inline>←</source>  || [[Assignment]] or [[Selective Assignment]]    || Result (returns from functions)
|-
| <source lang=apl inline>⊃</source>  || [[Pick]]                                      || [[Raze]]
|-
| <source lang=apl inline>#</source>  || [[Choose]]                                    || [[Count]]
|-
| <source lang=apl inline>[;]</source> ||colspan=2| [[Bracket Indexing]] (varying number of arguments)
|-
| <source lang=apl inline>↑</source>  || [[Take]]                                      || [[Signal]]
|-
| <source lang=apl inline>↓</source>  || [[Drop]]                                      || Print
|-
| <source lang=apl inline>⌽</source>  || [[Rotate]]                                    || [[Reverse]]
|-
| <source lang=apl inline>⍉</source>  || [[Dyadic transpose|Transpose Axes]]          || [[Transpose]]
|-
| <source lang=apl inline>!</source>  || [[Restructure]]                              || [[Item Ravel]]
|-
| <source lang=apl inline>⊂</source>  || Partition (a little like [[Split]])          || Partition Count
|-
| <source lang=apl inline>⍴</source>  || [[Reshape]]                                  || [[Shape]]
|-
| <source lang=apl inline>⊣</source>  || [[Left]]                                      || Null (returns <source lang=apl inline>()</source>)
|-
| <source lang=apl inline>⊢</source>  ||                                              || [[Right]]
|-
| <source lang=apl inline>∪</source>  || Combine Symbols                              || Separate Symbols
|-
| <source lang=apl inline>,</source>  || [[Catenate]]                                  || [[Ravel]]
|-
| <source lang=apl inline>~</source>  || [[Laminate]]                                  || [[Not]]
|-
| <source lang=apl inline>/</source>  || [[Replicate]]                                || [[Reduce]] (+ × ⌈ ⌊ ∧ ∨)
|-
| <source lang=apl inline>\</source>  || [[Expand]]                                    || [[Scan]] (+ × ⌈ ⌊ ∧ ∨)
|-
| <source lang=apl inline>.</source>  || [[Inner Product]] (+.×  ⌈.+  ⌊.+)          ||
|-
| <source lang=apl inline>∘.</source>  || [[Outer Product]] (+ - × ÷ | ⌈ ⌊ < ≤ = ≥ > ≠) ||
|-
| <source lang=apl inline>@</source>  || [[Rank operator|Rank]]                        ||
|-
| <source lang=apl inline>¨</source>  ||                                              || [[Each]] or Apply
|-
| <source lang=apl inline>⍨</source>  ||                                              || Bitwise
|}
 
== External links ==
* [[wikipedia:A+|A+]]
{{APL dialects}}[[Category:APL dialects]][[Category:Flat array languages]][[Category:Leading axis languages]]

Navigation menu