A+: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
m (Text replacement - "array languages]]" to "array languages]]Category:Languages with first-class functions")
(→‎Primitives: Choose is pretty much From/Select)
 
(2 intermediate revisions by the same user not shown)
Line 65: Line 65:
| <syntaxhighlight lang=apl inline>=</syntaxhighlight>  || [[Equal to]]                                  ||
| <syntaxhighlight lang=apl inline>=</syntaxhighlight>  || [[Equal to]]                                  ||
|-
|-
| <syntaxhighlight lang=apl inline>></syntaxhighlight>  || [[Greater than]]                              || [[Disclose]]
| <syntaxhighlight lang=apl inline>></syntaxhighlight>  || [[Greater than]]                              || [[Mix|Disclose]]
|-
|-
| <syntaxhighlight lang=apl inline>≥</syntaxhighlight>  || [[Greater than or Equal to]]                  ||
| <syntaxhighlight lang=apl inline>≥</syntaxhighlight>  || [[Greater than or Equal to]]                  ||
Line 95: Line 95:
| <syntaxhighlight lang=apl inline>⊃</syntaxhighlight>  || [[Pick]]                                      || [[Raze]]
| <syntaxhighlight lang=apl inline>⊃</syntaxhighlight>  || [[Pick]]                                      || [[Raze]]
|-
|-
| <syntaxhighlight lang=apl inline>#</syntaxhighlight>  || [[Choose]]                                   || [[Count]]
| <syntaxhighlight lang=apl inline>#</syntaxhighlight>  || Choose ([[From]])                            || [[Count]]
|-
|-
| <syntaxhighlight lang=apl inline>[;]</syntaxhighlight> ||colspan=2| [[Bracket Indexing]] (varying number of arguments)
| <syntaxhighlight lang=apl inline>[;]</syntaxhighlight> ||colspan=2| [[Bracket Indexing]] (varying number of arguments)
Line 113: Line 113:
| <syntaxhighlight lang=apl inline>⍴</syntaxhighlight>  || [[Reshape]]                                  || [[Shape]]
| <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>  || [[Left]]                                      || [[Stop|Null]] (returns <syntaxhighlight lang=apl inline>()</syntaxhighlight>)
|-
|-
| <syntaxhighlight lang=apl inline>⊢</syntaxhighlight>  ||                                              || [[Right]]
| <syntaxhighlight lang=apl inline>⊢</syntaxhighlight>  ||                                              || [[Right]]

Latest revision as of 02:29, 5 March 2024

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 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.

Primitives

Glyph Dyadic Monadic
+ Add Identity
- Subtract Negate
× Multiply Sign
÷ Divide Reciprocal
* Power Exponential
Log Natural log
| Residue Absolute value
Decode Pack
Encode Unpack
? Deal Roll
Circle (sin, cos, ...) Pi times
Solve Matrix Inverse
Max Ceiling
Min Floor
< Less than Enclose
Less than or Equal to
= Equal to
> Greater than Disclose
Greater than or Equal to
Not equal to
Bins Grade up
Grade down
Match Depth
Find Interval
Member Rake (like Enlist)
^ And Stop
Or or Cast Type
Format Default Format
Execute in Context or Protected Execute Execute
% Value in Context Value (of a symbol)
Assignment or Selective Assignment Result (returns from functions)
Pick Raze
# Choose (From) Count
[;] Bracket Indexing (varying number of arguments)
Take Signal
Drop Print
Rotate Reverse
Transpose Axes Transpose
! Restructure Item Ravel
Partition (a little like Split) Partition Count
Reshape Shape
Left Null (returns ())
Right
Combine Symbols Separate Symbols
, Catenate Ravel
~ Laminate Not
/ Replicate Reduce (+ × ⌈ ⌊ ∧ ∨)
\ Expand Scan (+ × ⌈ ⌊ ∧ ∨)
. Inner Product (+.× ⌈.+ ⌊.+)
∘. Outer Product (+ - × ÷ | ⌈ ⌊ < ≤ = ≥ > ≠)
@ Rank
¨ Each or Apply
Bitwise

External links

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