Dyalog APL: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
Miraheze>Marshall
Miraheze>Adám Brudzewsky
(remove history list from intro)
Line 23: Line 23:
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.
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:
Dyalog APL is unique among commercial APLs in continuously getting additional primitives and constructs since its initial release
 
* 1983: Naming derived functions (<source lang=apl inline>sum←+⌿</source>)
* 1990: Namespaces (<source lang=apl inline>MyUtils.Fun args</source>)
* 1995: [[Control structures|Keywords]] (If/Then/Else, Repeat/Until, exception handling, and so on)
* 1996: Functional programming: [[dfn|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]] (<source lang=apl inline>+⌿÷≢</source>)
* 2014: Futures and isolates for [[parallel programming|Parallel computing]]


== Versions ==
== Versions ==
Line 106: Line 98:
| 17.0  || 2018 || July      || <source lang=apl inline>⎕NCOPY</source>, <source lang=apl inline>⎕NMOVE</source>
| 17.0  || 2018 || July      || <source lang=apl inline>⎕NCOPY</source>, <source lang=apl inline>⎕NMOVE</source>
|-
|-
| 17.1  || 2019 || October  ||
| 17.1  || 2019 || October  || Duplicates in [[Interval Index]] (<source lang=apl inline>⍸</source>) look-up array
|-
|-
| 18.0  ||colspan=2| Unreleased || [[Atop]] (<source lang=apl inline>⍤</source>), [[Over]] (<source lang=apl inline>⍥</source>), [[Constant]] (<source lang=apl inline>⍨</source>), [[Unique Mask]] (<source lang=apl inline>≠</source>)
| 18.0  ||colspan=2| Unreleased || [[Atop]] (<source lang=apl inline>⍤</source>), [[Over]] (<source lang=apl inline>⍥</source>), [[Constant]] (<source lang=apl inline>⍨</source>), [[Unique Mask]] (<source lang=apl inline>≠</source>)

Revision as of 15:56, 11 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 continuously getting additional primitives and constructs since its initial release

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