Dyalog APL: Difference between revisions
Miraheze>Marshall (Lisp -> Scheme) |
Miraheze>Marshall |
||
Line 32: | Line 32: | ||
* 2014: [[Tacit]] syntax similar to that of [[J]] (<source lang=apl inline>+⌿÷≢</source>) | * 2014: [[Tacit]] syntax similar to that of [[J]] (<source lang=apl inline>+⌿÷≢</source>) | ||
* 2014: Futures and isolates for [[parallel programming|Parallel computing]] | * 2014: Futures and isolates for [[parallel programming|Parallel computing]] | ||
== Versions == | |||
{|class=wikitable | |||
! Number !! Date !! Features | |||
|- | |||
| 1 || April 1983 || | |||
|- | |||
| 2 || 1984 || | |||
|- | |||
| 3.0 || 1985 || | |||
|- | |||
| 4.0 || October 1986 || | |||
|- | |||
| 5.0 || April 1987 || | |||
|- | |||
| 5.1 || April 1988 || | |||
|- | |||
| 5.2 || January 1990 || | |||
|- | |||
| 6.0 || April 1990 || | |||
|- | |||
| 6.1 || October 1990 || | |||
|- | |||
| 6.2 || April 1993 || | |||
|- | |||
| 6.3 || October 1993 || | |||
|- | |||
| 7.0 || August 1994 || | |||
|- | |||
| 7.1 || May 1995 || | |||
|- | |||
| 8.0 || May 1996 || | |||
|- | |||
| 8.1 || March 1997 || | |||
|- | |||
| 8.2 || January 1999 || | |||
|- | |||
| 9.0 || September 2000 || | |||
|- | |||
| 9.0.1 || January 2001 || | |||
|- | |||
| 9.0.2 || January 2002 || | |||
|- | |||
| 9.5 || September 2002 || | |||
|- | |||
| 10.0 || March 2003 || | |||
|- | |||
| 10.1 || July 2004 || | |||
|- | |||
| 11.0 || October 2006 || <source lang=apl inline>⎕BASE</source>, <source lang=apl inline>⎕CLASS</source>, <source lang=apl inline>⎕DF</source>, <source lang=apl inline>⎕FIX</source>, <source lang=apl inline>⎕INSTANCES</source>, <source lang=apl inline>⎕NEW</source>, <source lang=apl inline>⎕SRC</source>, <source lang=apl inline>⎕THIS</source> | |||
|- | |||
| 12.0 || August 2008 || <source lang=apl inline>⎕AVU</source>, <source lang=apl inline>⎕FCOPY</source>, <source lang=apl inline>⎕FPROPS</source>, <source lang=apl inline>⎕UCS</source> | |||
|- | |||
| 12.1 || November 2009 || [[I-Beam]] (<source lang=apl inline>⌶</source>), [[Table]] (<source lang=apl inline>⍪</source>), <source lang=apl inline>⎕XML</source>, <source lang=apl inline>⎕FCHK</source> | |||
|- | |||
| 13.0 || April 2011 || [[Left]] (<source lang=apl inline>⊣</source>), [[Right]] (<source lang=apl inline>⊢</source>), [[Variant]] (<source lang=apl inline>⍠</source>), <source lang=apl inline>⎕OPT</source>, <source lang=apl inline>⎕R</source>, <source lang=apl inline>⎕S</source>, <source lang=apl inline>⎕FR</source>, <source lang=apl inline>⎕DCT</source>, <source lang=apl inline>⎕PROFILE</source>, <source lang=apl inline>⎕RSI</source> | |||
|- | |||
| 13.1 || April 2012 || <source lang=apl inline>⎕DMX</source>, <source lang=apl inline>⎕FHIST</source> | |||
|- | |||
| 13.2 || January 2013 || | |||
|- | |||
| 14.0 || June 2014 || [[Tally]] (<source lang=apl inline>≢</source>), [[Key]] (<source lang=apl inline>⌸</source>), [[Rank operator]] (<source lang=apl inline>⍤</source>) | |||
|- | |||
| 14.1 || June 2015 || | |||
|- | |||
| 15.0 || June 2016 || <source lang=apl inline>⎕MKDIR</source>, <source lang=apl inline>⎕NDELETE</source>, <source lang=apl inline>⎕NEXISTS</source>, <source lang=apl inline>⎕NGET</source>, <source lang=apl inline>⎕NINFO</source>, <source lang=apl inline>⎕NPARTS</source>, <source lang=apl inline>⎕NPUT</source> | |||
|- | |||
| 16.0 || June 2017 || [[At]] (<source lang=apl inline>@</source>), [[Interval Index]] (<source lang=apl inline>⍸</source>), [[Where]] (<source lang=apl inline>⍸</source>), [[Nest]] (<source lang=apl inline>⊆</source>), [[Partition]] (<source lang=apl inline>⊆</source>), [[Stencil]] (<source lang=apl inline>⌺</source>), <source lang=apl inline>⎕JSON</source>, <source lang=apl inline>⎕CSV</source> | |||
|- | |||
| 17.0 || July 2018 || <source lang=apl inline>⎕NCOPY</source>, <source lang=apl inline>⎕NMOVE</source> | |||
|- | |||
| 17.1 || October 2019 || | |||
|} | |||
== Primitives == | == Primitives == |
Revision as of 14:38, 5 November 2019
Dyalog APL was first released by British company Dyadic Systems Ltd. (later Dyalog Ltd.) in 1983 for the Zylog Z80 processor. The name Dyalog is a portmanteau of Dyadic and Zylog. As of 2018, Dyalog APL is available for AIX, Linux (including on the Raspberry Pi), macOS and Microsoft Windows platforms. While mainly based is based on APL2, it adds support for both object-oriented, functional, and tacit programming. Dyalog APL also serves as the inspiration for many hobby implementations of APL.
In 1995, two of the development team — John Scholes and Peter Donnelly — were awarded the Iverson Award for their work on the interpreter. Gitte Christensen and Morten Kromberg were joint recipients of the Iverson Award in 2016.
Dyalog APL is unique among commercial APLs in getting additional primitives and constructs. The most important novel extension to the original APL language include:
- 1983: Naming derived functions (
sum←+⌿
) - 1990: Namespaces (
MyUtils.Fun args
) - 1995: Keywords (If/Then/Else, Repeat/Until, exception handling, and so on)
- 1996: Functional programming: dfns provide lexical scope and lambda-style expressions
- 2006: Object orientated programming, allowing integration with OO frameworks and Microsoft .NET
- 2014: Tacit syntax similar to that of J (
+⌿÷≢
) - 2014: Futures and isolates for Parallel computing
Versions
Number | Date | Features |
---|---|---|
1 | April 1983 | |
2 | 1984 | |
3.0 | 1985 | |
4.0 | October 1986 | |
5.0 | April 1987 | |
5.1 | April 1988 | |
5.2 | January 1990 | |
6.0 | April 1990 | |
6.1 | October 1990 | |
6.2 | April 1993 | |
6.3 | October 1993 | |
7.0 | August 1994 | |
7.1 | May 1995 | |
8.0 | May 1996 | |
8.1 | March 1997 | |
8.2 | January 1999 | |
9.0 | September 2000 | |
9.0.1 | January 2001 | |
9.0.2 | January 2002 | |
9.5 | September 2002 | |
10.0 | March 2003 | |
10.1 | July 2004 | |
11.0 | October 2006 | ⎕BASE , ⎕CLASS , ⎕DF , ⎕FIX , ⎕INSTANCES , ⎕NEW , ⎕SRC , ⎕THIS
|
12.0 | August 2008 | ⎕AVU , ⎕FCOPY , ⎕FPROPS , ⎕UCS
|
12.1 | November 2009 | I-Beam (⌶ ), Table (⍪ ), ⎕XML , ⎕FCHK
|
13.0 | April 2011 | Left (⊣ ), Right (⊢ ), Variant (⍠ ), ⎕OPT , ⎕R , ⎕S , ⎕FR , ⎕DCT , ⎕PROFILE , ⎕RSI
|
13.1 | April 2012 | ⎕DMX , ⎕FHIST
|
13.2 | January 2013 | |
14.0 | June 2014 | Tally (≢ ), Key (⌸ ), Rank operator (⍤ )
|
14.1 | June 2015 | |
15.0 | June 2016 | ⎕MKDIR , ⎕NDELETE , ⎕NEXISTS , ⎕NGET , ⎕NINFO , ⎕NPARTS , ⎕NPUT
|
16.0 | June 2017 | At (@ ), Interval Index (⍸ ), Where (⍸ ), Nest (⊆ ), Partition (⊆ ), Stencil (⌺ ), ⎕JSON , ⎕CSV
|
17.0 | July 2018 | ⎕NCOPY , ⎕NMOVE
|
17.1 | October 2019 |
Primitives
Functions
Glyph | Monadic | Dyadic |
---|---|---|
+ |
Conjugate | Plus |
- |
Negate | Minus |
× |
Signum | Times |
÷ |
Reciprocal | Divide |
| |
Magnitude | Residue |
⌊ |
Floor | Minimum |
⌈ |
Ceiling | Maximum |
* |
Exponential | Power |
⍟ |
Natural Logarithm | Logarithm |
! |
Factorial | Binomial |
○ |
Pi Times | Circular |
~ |
Not | Without |
? |
Roll | Query |
∧ |
And | |
∨ |
Or | |
⍲ |
Nand | |
⍱ |
Nor | |
< |
Less | |
≤ |
Less Or Equal | |
= |
Equal | |
≥ |
Greater Or Equal | |
> |
Greater | |
≠ |
Unique Mask | Not Equal |
⍴ |
Shape | Reshape |
, |
Ravel | Catenate |
⍪ |
Table | Catenate First |
⌽ |
Reverse | Rotate |
⊖ |
Reverse First | Rotate First |
⍉ |
Transpose | |
↑ |
Mix/Disclose | Take |
↓ |
Split | Drop |
⊂ |
Enclose | Partitioned Enclose |
⊆ |
Nest | Partition |
∊ |
Enlist/Type | Membership |
⊃ |
Disclose/Mix | Pick |
/ |
Replicate | |
⌿ |
Replicate First | |
\ |
Expand | |
⍀ |
Expand First | |
∩ |
Intersection | |
∪ |
Unique | Union |
⊣ |
Same | Left |
⊢ |
Same | Right |
⍳ |
Index Generator | Index Of |
⍸ |
Where | Interval Index |
⍒ |
Grade Down | |
⍋ |
Grade Up | |
⍷ |
Find | |
≡ |
Depth | Match |
≢ |
Tally | Not Match |
⍎ |
Execute | |
⍕ |
Format | |
⊥ |
Base | |
⊤ |
Represent | |
⌹ |
Matrix Inverse | Matrix Divide |
⌷ |
Materialise | Squad Indexing |
Operators
Syntax | Monadic call | Dyadic call |
---|---|---|
f/ |
Reduction | Windowed Reduction |
f⌿ |
Reduction First | Windowed Reduction First |
f\ |
Scan | |
f⍀ |
Scan First | |
f¨ |
Each | |
f⍨ |
Commute | |
A⍨ |
Constant | |
f⍣v |
Power | |
f.g |
Inner Product | |
∘.f |
Outer Product | |
A∘g |
Bind | |
f∘B |
||
f∘g |
Beside | |
f⍤B |
Rank | |
f⍤g |
Atop | |
f⍥g |
Over | |
f@v |
At | |
f⍠B |
Variant | |
f⌸ |
Key | |
f⌺B |
Stencil | |
A⌶ |
I-Beam | |
f& |
Spawn | |
f[B] |
Axis |