Dyalog APL: Difference between revisions
Miraheze>Adám Brudzewsky (remove history list from intro) |
Miraheze>Marshall No edit summary |
||
Line 8: | Line 8: | ||
| developer = [[Dyalog Ltd.]] | | developer = [[Dyalog Ltd.]] | ||
| latest release version = 17.1 / 2019 | | latest release version = 17.1 / 2019 | ||
| implementation languages = [ | | implementation languages = [[wikipedia:C (programming language)|C]], [[wikipedia:C++|C++]], APL | ||
| platforms = x86, x86_64, IBM POWER, ARM32 | | platforms = x86, x86_64, IBM POWER, ARM32 | ||
| operating systems = Windows, Linux, macOS, AIX | | operating systems = Windows, Linux, macOS, AIX | ||
Line 16: | Line 16: | ||
| file ext = .dws, .dse, .dcf, .dyalog, .dyapp, .apl, .apla, .aplf, .aplo, .apln, .aplc, .apli | | file ext = .dws, .dse, .dcf, .dyalog, .dyapp, .apl, .apla, .aplf, .aplo, .apln, .aplc, .apli | ||
| documentation = [https://docs.dyalog.com/ Documentation Centre] | | documentation = [https://docs.dyalog.com/ Documentation Centre] | ||
| influenced by = [[APL2]], [[J]], [[SHARP APL]], [[wikipedia:Scheme (programming language)|Scheme]] | | influenced by = [[APL2]], [[J]], [[SHARP APL]], [[wikipedia:Scheme (programming language)|Scheme]], [[wikipedia:C-Sharp_|C#]] | ||
| influenced = [[NARS2000]], [[GNU APL]], [[ngn/apl]], [[dzaima/APL]], [[APL\iv]] | | influenced = [[NARS2000]], [[GNU APL]], [[ngn/apl]], [[dzaima/APL]], [[APL\iv]] | ||
}} | }} | ||
'''Dyalog APL''' | '''Dyalog APL''', or simply '''Dyalog''', is a modern APL in the [[APL2]] tradition, first released by British company [[Dyalog Ltd.|Dyadic Systems Ltd.]] (now Dyalog Ltd.) in 1983 for the Zylog Z80 processor (the name ''Dyalog'' is a portmanteau of ''Dyadic'' and ''Zylog''). Dyalog supports several platforms and interfaces with many languages and runtimes including native [[wikipedia:Shared library|shared libraries]], [[.NET]], the [[wikipedia:Java virtual machine|JVM]], [[wikipedia:R (programming language)|R]], and [[wikipedia:Python (programming language)|Python]]. It is actively developed and has introduced many new primitives and concepts to array programming. Major categories of features introduced to APL by Dyalog are [[tacit]] programming by allowing named [[derived function]]s and later [[train]]s, lexically-scoped functional programming using [[dfns]], [[namespace]]s and [[object-oriented programming]], and the addition of [[leading axis theory]] and the [[Rank operator]] to the [[nested array model|nested array]] paradigm. | ||
In 1995, two | In 1995, two Dyalog developers—[[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. | ||
== Versions == | == Versions == | ||
Line 56: | Line 54: | ||
| 7.0 || 1994 || August || | | 7.0 || 1994 || August || | ||
|- | |- | ||
| 7.1 || 1995 || May || [[Keywords]] (If/Then/Else, Repeat/Until, exception handling, and so on) | | 7.1 || 1995 || May || [[Control structures|Keywords]] (If/Then/Else, Repeat/Until, exception handling, and so on) | ||
|- | |- | ||
| 8.0 || 1996 || May || [[dfns]] with [[lexical scope]] | | 8.0 || 1996 || May || [[dfns]] with [[lexical scope]] |
Revision as of 15:59, 11 November 2019
Dyalog APL, or simply Dyalog, is a modern APL in the APL2 tradition, first released by British company Dyadic Systems Ltd. (now Dyalog Ltd.) in 1983 for the Zylog Z80 processor (the name Dyalog is a portmanteau of Dyadic and Zylog). Dyalog supports several platforms and interfaces with many languages and runtimes including native shared libraries, .NET, the JVM, R, and Python. It is actively developed and has introduced many new primitives and concepts to array programming. Major categories of features introduced to APL by Dyalog are tacit programming by allowing named derived functions and later trains, lexically-scoped functional programming using dfns, namespaces and object-oriented programming, and the addition of leading axis theory and the Rank operator to the nested array paradigm.
In 1995, two Dyalog developers—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.
Versions
Dyalog lists historical versions, along with release notes since 14.0, on its website.
Number | Year | Month | Features |
---|---|---|---|
1 | 1983 | April | Assignment for derived functions |
2 | 1984 | ||
3.0 | 1985 | ||
4.0 | 1986 | October | |
5.0 | 1987 | April | |
5.1 | 1988 | April | |
5.2 | 1990 | January | |
6.0 | 1990 | April | Namespaces with dot syntax |
6.1 | 1990 | October | |
6.2 | 1993 | April | |
6.3 | 1993 | October | |
7.0 | 1994 | August | |
7.1 | 1995 | May | Keywords (If/Then/Else, Repeat/Until, exception handling, and so on) |
8.0 | 1996 | May | dfns with lexical scope |
8.1 | 1997 | March | |
8.2 | 1999 | January | |
9.0 | 2000 | September | |
9.0.1 | 2001 | January | |
9.0.2 | 2002 | January | |
9.5 | 2002 | September | |
10.0 | 2003 | March | |
10.1 | 2004 | July | |
11.0 | 2006 | October | Object oriented programming (classes, objects, interfaces) modelled after C#, Index (⌷ ), Power operator (⍣ ), GCD (∨ ), LCM (∧ )
|
12.0 | 2008 | August | Unicode support (⎕AVU , ⎕UCS ), ⎕FCOPY , ⎕FPROPS
|
12.1 | 2009 | November | I-Beam (⌶ ), Table (⍪ ), ⎕XML , ⎕FCHK , User commands
|
13.0 | 2011 | April | Left (⊣ ), Right (⊢ ), Variant (⍠ ), ⎕OPT , ⎕R , ⎕S , ⎕FR , ⎕DCT , ⎕PROFILE , ⎕RSI
|
13.1 | 2012 | April | ⎕DMX , ⎕FHIST
|
13.2 | 2013 | January | |
14.0 | 2014 | June | Trains, Tally (≢ ), Key (⌸ ), Rank operator (⍤ ), multi-threading with futures and isolates
|
14.1 | 2015 | June | |
15.0 | 2016 | June | ⎕MKDIR , ⎕NDELETE , ⎕NEXISTS , ⎕NGET , ⎕NINFO , ⎕NPARTS , ⎕NPUT
|
16.0 | 2017 | June | At (@ ), Interval Index (⍸ ), Where (⍸ ), Nest (⊆ ), Partition (⊆ ), Stencil (⌺ ), ⎕JSON , ⎕CSV
|
17.0 | 2018 | July | ⎕NCOPY , ⎕NMOVE
|
17.1 | 2019 | October | Duplicates in Interval Index (⍸ ) look-up array
|
18.0 | Unreleased | Atop (⍤ ), Over (⍥ ), Constant (⍨ ), Unique Mask (≠ )
|
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 |