Dyalog APL

From APL Wiki
Revision as of 14:38, 5 November 2019 by Miraheze>Marshall (→‎Primitives)
Jump to navigation Jump to search

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

External links

Template:APL programming language