Dyalog APL: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
Miraheze>Adám Brudzewsky
No edit summary
Miraheze>Adám Brudzewsky
Line 32: Line 32:
! Number    !! Year !! Month    !! Features
! Number    !! Year !! Month    !! Features
|-
|-
'''1'''   || 1983 || April    || [[Assignment]] for [[derived function]]s
|  1  || 1983 || April    || (Zilog S8000 only)
|-
|-
'''2'''   || 1984 ||          ||
|  2  || 1984 ||          || (Many more platforms)
|-
|-
'''3.0''' || 1985 ||          ||
|  3.0 || 1985 ||          || (More platforms) Rectangular display of arrays
|-
|-
'''4.0''' || 1986 || October  ||
|  4.0 || 1986 || October  || User-defined operators, [[Assignment]] for functions (including [[derived function]]s), <source lang=apl inline>⎕MONITOR</source>
|-
|-
'''5.0''' || 1987 || April    ||
|  5.0 || 1987 || April    || Nested array editor
|-
|-
|    5.1    || 1988 || April    ||
|    5.1    || 1988 || April    || (first version for DOS) User-defined input/output tables, <source lang=apl inline>⎕SM</source> and <source lang=apl inline>⎕SR</source>, windowed editor/tracer, interface to GSS/CGI
|-
|-
|    5.2    || 1990 || January  ||
|    5.2    || 1990 || January  || Naked trace
|-
|-
'''6.0''' || 1990 || April    || [[Namespaces]]
|  6.0 || 1990 || April    || GUI IDE
|-
|-
|    6.1    || 1990 || October  ||
|    6.1    || 1990 || October  || <source lang=apl inline>⎕ED</source>
|-
|-
|    6.2   || 1993 || April    ||
|    6.2.1  || 1992 || July      || (first version for Windows) <source lang=apl inline>⎕WC</source>, <source lang=apl inline>⎕DQ</source>, etc.
|-
|-
|    6.3   || 1993 || October  ||
|    6.3.1  || 1993 || April    || <source lang=apl inline>⎕NA</source>, graphical, clipboard and printer objects
|-
|-
'''7.0''' || 1994 || August    ||
|  7.0.1 || 1994 || August    || Namespaces, additional GUI objects
|-
|-
|    7.1    || 1995 || May      || [[Control structures|Keywords]] (If/Then/Else, Repeat/Until, exception handling, and so on)
|    7.1    || 1995 || May      || <source lang=apl inline>⎕CS</source>, GUI objects as namespaces, greater [[APL2]] compatibility
|-
|-
'''8.0''' || 1996 || May      || [[dfns]] with [[lexical scope]]
|  8.0 || 1996 || May      || [[Control structures|Keywords]] (<source lang=apl inline>:If</source>/<source lang=apl inline>:Else</source>, <source lang=apl inline>:Repeat</source>/<source lang=apl inline>:Until</source>, <source lang=apl inline>:Trap</source>, and so on), <source lang=apl inline>⎕PATH</source>, additional GUI objects, OLE
|-
|-
|    8.1    || 1997 || March    ||
|    8.1    || 1997 || March    || [[dfns]] with [[lexical scope]], syntax colouring, TCPSocket object, OLE client/server, automatic file tie numbers
|-
|-
|    8.2    || 1999 || January  || Threading with [[Spawn]] (<source lang=apl inline>&</source>)
|    8.2    || 1999 || January  || Threading with [[Spawn]] (<source lang=apl inline>&</source>), ActiveX, <source lang=apl inline>:With</source>, more [[APL2]] compatibility, additional GUI objects
|-
|-
'''9.0''' || 2000 || September || [[Namespace]] [[reference]]s (instead of [[string]] names) and dot syntax, context-sensitive help (F1)
|  9.0 || 2000 || September || [[Namespace]] [[reference]]s (instead of [[string]] names) and dot syntax, context-sensitive help (F1), aditional GUI objects with animation
|-
|-
|    9.0.1  || 2001 || January  ||
|    9.0.1  || 2001 || January  || (Windows CE) Pocket APL
|-
|-
|    9.0.2  || 2002 || January  ||
|    9.0.2  || 2002 || January  || [[.NET]] support
|-
|-
|    9.5    || 2002 || September ||
|    9.5    || 2002 || September ||
|-
|-
| '''10.0''' || 2003 || March    || <source lang=apl inline>⎕NULL</source>, [[idiom recognition]], retained hash tables
| 10.0 || 2003 || March    || <source lang=apl inline>⎕NULL</source>, source lang=apl inline>⎕MAP</source>, [[idiom recognition]] (mapped files), retained hash tables, [[.NET]] support built-in, run-time workspace as .exe, auto-completion, mapped
|-
|-
|    10.1    || 2004 || July      || Multiple arguments in [[tradfn]] headers
|    10.1    || 2004 || July      || Multiple arguments in [[tradfn]] headers, thread tokens, 64-bit component files, value tips
|-
|-
| '''11.0''' || 2006 || October  || [[Object oriented programming]] (classes, objects, interfaces) modelled after [[wikipedia:C-Sharp_|C#]], [[Squad indexing|Index]] (<source lang=apl inline>⌷</source>), [[Power operator]] (<source lang=apl inline>⍣</source>), [[GCD]] (<source lang=apl inline>∨</source>), [[LCM]] (<source lang=apl inline>∧</source>)
| 11.0 || 2006 || October  || [[Object oriented programming]] (classes, objects, interfaces) modelled after [[wikipedia:C-Sharp_|C#]], [[Squad indexing|Index]] (<source lang=apl inline>⌷</source>), [[Power operator]] (<source lang=apl inline>⍣</source>), [[GCD]] (<source lang=apl inline>∨</source>), [[LCM]] (<source lang=apl inline>∧</source>)
|-
|-
| '''12.0''' || 2008 || August    || [[Unicode]] support (<source lang=apl inline>⎕AVU</source>, <source lang=apl inline>⎕UCS</source>), <source lang=apl inline>⎕FCOPY</source>, <source lang=apl inline>⎕FPROPS</source>
| 12.0 || 2008 || August    || [[Unicode]] support (<source lang=apl inline>⎕AVU</source>, <source lang=apl inline>⎕UCS</source>), <source lang=apl inline>⎕FCOPY</source>, <source lang=apl inline>⎕FPROPS</source>
|-
|-
|    12.1    || 2009 || November  || [[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>, [[User commands]]
|    12.1    || 2009 || November  || [[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>, [[User commands]]
|-
|-
| '''13.0''' || 2011 || April    || [[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>⎕PROFILE</source>, <source lang=apl inline>⎕RSI</source>, [[complex number]] and [[decimal float]] support, short arguments for [[Take]], [[Drop]], and [[Squad indexing|Index]] (<source lang=apl inline>↑</source>, <source lang=apl inline>↓</source>, <source lang=apl inline>⌷</source>)
| 13.0 || 2011 || April    || [[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>⎕PROFILE</source>, <source lang=apl inline>⎕RSI</source>, [[complex number]] and [[decimal float]] support, short arguments for [[Take]], [[Drop]], and [[Squad indexing|Index]] (<source lang=apl inline>↑</source>, <source lang=apl inline>↓</source>, <source lang=apl inline>⌷</source>)
|-
|-
|    13.1    || 2012 || April    || <source lang=apl inline>⎕DMX</source>, <source lang=apl inline>⎕FHIST</source>
|    13.1    || 2012 || April    || <source lang=apl inline>⎕DMX</source>, <source lang=apl inline>⎕FHIST</source>
Line 88: Line 88:
|    13.2    || 2013 || January  || Array [[Editor]]
|    13.2    || 2013 || January  || Array [[Editor]]
|-
|-
| '''14.0''' || 2014 || June      || [[Trains]], [[Tally]] (<source lang=apl inline>≢</source>), [[Key]] (<source lang=apl inline>⌸</source>), [[Rank operator]] (<source lang=apl inline>⍤</source>), multi-threading with [[futures]] and [[isolates]]
| 14.0 || 2014 || June      || [[Trains]], [[Tally]] (<source lang=apl inline>≢</source>), [[Key]] (<source lang=apl inline>⌸</source>), [[Rank operator]] (<source lang=apl inline>⍤</source>), multi-threading with [[futures]] and [[isolates]]
|-
|-
|    14.1    || 2015 || June      ||
|    14.1    || 2015 || June      || <source lang=apl inline>:Disposable</source> [[.NET]] objects and resources, gesture support, many new I-beams
|-
|-
|[[Dyalog_APL_versions#15.0|'''15.0''']]|| 2016 || June      || <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>
|[[Dyalog_APL_versions#15.0|15.0]]|| 2016 || June      || <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>
|-
|-
| [[Dyalog_APL_versions#16.0|'''16.0''']]|| 2017 || June      || [[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>
| [[Dyalog_APL_versions#16.0|16.0]]|| 2017 || June      || [[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>
|-
|-
|[[Dyalog_APL_versions#17.0|'''17.0''']]|| 2018 || July      || <source lang=apl inline>⎕NCOPY</source>, <source lang=apl inline>⎕NMOVE</source>
|[[Dyalog_APL_versions#17.0|17.0]]|| 2018 || July      || <source lang=apl inline>⎕NCOPY</source>, <source lang=apl inline>⎕NMOVE</source>
|-
|-
|[[Dyalog_APL_versions#17.1|17.1]]|| 2019 || October  || Duplicates in [[Interval Index]] (<source lang=apl inline>⍸</source>) look-up array
|[[Dyalog_APL_versions#17.1|17.1]]|| 2019 || October  || Duplicates in [[Interval Index]] (<source lang=apl inline>⍸</source>) look-up array
|-
|-
|[[Dyalog_APL_versions#15.0|'''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>), duplicates from [[Where]] (<source lang=apl inline>⍸</source>), empty partitions from partitioned enclose (<source lang=apl inline>⊂</source>), multi-line session input, date-time conversion, case folding/mapping (<source lang=apl inline>⎕C</source>)
|[[Dyalog_APL_versions#15.0|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>), duplicates from [[Where]] (<source lang=apl inline>⍸</source>), empty partitions from partitioned enclose (<source lang=apl inline>⊂</source>), multi-line session input, date-time conversion, case folding/mapping (<source lang=apl inline>⎕C</source>)
|}
|}



Revision as of 00:23, 13 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

Main article: Dyalog APL versions

Dyalog lists historical versions, along with release notes since 14.0, on its website.

Number Year Month Features
1 1983 April (Zilog S8000 only)
2 1984 (Many more platforms)
3.0 1985 (More platforms) Rectangular display of arrays
4.0 1986 October User-defined operators, Assignment for functions (including derived functions), ⎕MONITOR
5.0 1987 April Nested array editor
5.1 1988 April (first version for DOS) User-defined input/output tables, ⎕SM and ⎕SR, windowed editor/tracer, interface to GSS/CGI
5.2 1990 January Naked trace
6.0 1990 April GUI IDE
6.1 1990 October ⎕ED
6.2.1 1992 July (first version for Windows) ⎕WC, ⎕DQ, etc.
6.3.1 1993 April ⎕NA, graphical, clipboard and printer objects
7.0.1 1994 August Namespaces, additional GUI objects
7.1 1995 May ⎕CS, GUI objects as namespaces, greater APL2 compatibility
8.0 1996 May Keywords (:If/:Else, :Repeat/:Until, :Trap, and so on), ⎕PATH, additional GUI objects, OLE
8.1 1997 March dfns with lexical scope, syntax colouring, TCPSocket object, OLE client/server, automatic file tie numbers
8.2 1999 January Threading with Spawn (&), ActiveX, :With, more APL2 compatibility, additional GUI objects
9.0 2000 September Namespace references (instead of string names) and dot syntax, context-sensitive help (F1), aditional GUI objects with animation
9.0.1 2001 January (Windows CE) Pocket APL
9.0.2 2002 January .NET support
9.5 2002 September
10.0 2003 March ⎕NULL, source lang=apl inline>⎕MAP</source>, idiom recognition (mapped files), retained hash tables, .NET support built-in, run-time workspace as .exe, auto-completion, mapped
10.1 2004 July Multiple arguments in tradfn headers, thread tokens, 64-bit component files, value tips
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, ⎕PROFILE, ⎕RSI, complex number and decimal float support, short arguments for Take, Drop, and Index (, , )
13.1 2012 April ⎕DMX, ⎕FHIST
13.2 2013 January Array Editor
14.0 2014 June Trains, Tally (), Key (), Rank operator (), multi-threading with futures and isolates
14.1 2015 June :Disposable .NET objects and resources, gesture support, many new I-beams
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 (), duplicates from Where (), empty partitions from partitioned enclose (), multi-line session input, date-time conversion, case folding/mapping (⎕C)

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