Dyalog APL versions: Difference between revisions

Jump to navigation Jump to search
4,243 bytes added ,  21:42, 11 December 2019
Line 16: Line 16:


[http://help.dyalog.com/13.1/index_CSH.htm#RelNotes13.0/Key%20Features.htm Release notes], [http://docs.dyalog.com/13.0 documentation centre]
[http://help.dyalog.com/13.1/index_CSH.htm#RelNotes13.0/Key%20Features.htm Release notes], [http://docs.dyalog.com/13.0 documentation centre]
<!-- Need to check version
 
A [[primitive operator]] (<source lang=apl inline></source>) was introduced as an alternative spelling of the existing system operator [[Variant]] (<source lang=apl inline>⎕OPT</source>), with a functionality similar to one sketched by [[Ken Iverson]] (<source lang=apl inline>:</source>)<ref>Kenneth E. Iverson, [https://www.jsoftware.com/papers/APLDictionary.htm A Dictionary of APL], VI. Conjunctions, [https://www.jsoftware.com/papers/APLDictionary1.htm#colon Custom]. APL Quote Quad, Volume 18, Number 1, 1987-09.</ref> and implemented in J (<source lang=j inline>!.</source>).
Version 13.0 was released in April 2011. It featured extensive changes to the language including support for [[Complex number|complex]] and [[decimal float]] [[numeric type]]s, [[identity function]] primitives, support for [[regular expression]]s, extensions to existing primitives, and new [[Idiom recognition|idioms]].
-->
 
Support for [[complex number]]s including [[numeric literal]] notation such as <source lang=apl inline>3J4</source>, arithmetic and [[Circle function|circle]] functions, and [[tolerant comparison]]s [[Equal]] and [[Not Equal]] (but not [[array ordering]]: [[total array ordering]] including ordering of complex numbers was added in [[#17.0|17.0]]). While almost all changes were [[Backwards compatibility|backwards compatible]], backwards compatibility in the [[Power]] function was broken: fractional powers of negative numbers, such as <source lang=apl inline>¯8 * ÷3</source>, could return different results.
 
Support was added for 128-bit [[decimal floating point]] numbers (from [[wikipedia:IEEE 754|IEEE 754]]-2008), using the [[wikipedia:densely packed decimal|densely packed decimal]] (DPD) format internally. The [[system variable]] <source lang=apl inline>⎕FR</source> (Floating point Representation) was added, with the options 645 for 64-bit binary (5) floats and 1287 for 128-bit decimal (7) floats. Because of the increased precision of decfs, an additional system variable <source lang=apl inline>⎕DCT</source> was added to control [[comparison tolerance]] with decfs enabled, with the default value <source lang=apl inline>1E¯28</source>. When <source lang=apl inline>⎕FR</source> is 645, <source lang=apl inline>⎕CT</source> controls the comparison tolerance, but when it is 1287, <source lang=apl inline>⎕DCT</source> controls comparison tolerance. Support for interfacing with [[.NET]] decimal floats was also added. Because no complex decimal float type was added, version 13.1 broke Dyalog APL's strict numeric type hierarchy, introducing potential [[Array model#Numeric type coercion|changes in precision]] when placing values together in an array.
 
Identity functions <source lang=apl inline>⊣</source> ([[Same]], [[Left]]) and <source lang=apl inline></source> ([[Same]], [[Right]]) were introduced. Monadic <source lang=apl inline>+</source>, formerly called [[Identity]], was changed to [[Conjugate]] (a change which did not break backwards compatibility, because prior to the introduction of [[complex number]]s the two functions were indistinguishable). Dyadic functions [[Take]] (<source lang=apl inline>↑</source>), [[Drop]] (<source lang=apl inline>↓</source>), and [[Index function|Index]] (<source lang=apl inline></source>) were extended to allow short left arguments, matching [[SHARP APL]]'s interpretation of the [[leading axis theory]].
 
The [[Index Generator]] function was changed so that <source lang=apl inline>⍳⍬</source> would return <source lang=apl inline>⊂⍬</source> rather than <source lang=apl inline>⎕IO</source>. The former behaviour was considered a bug because <source lang=apl inline>⎕IO</source> is not a valid [[index]] into an array with [[empty]] [[shape]] (that is, a [[scalar]]).
 
[[System operator]]s <source lang=apl inline>⎕S</source> and <source lang=apl inline>⎕R</source> were added to perform [[regex]] search and replace, respectively. The [[system function]] <source lang=apl inline>⎕RSI</source> (Reference Space Indicator) was implemented to return references to the namespaces from which functions were called: <source lang=apl inline>⎕RSI</source> is identical to <source lang=apl inline>⎕NSI</source> but returns [[namespace reference]]s instead of [[string]] names. System function <source lang=apl inline>⎕PROFILE</source> was added for line-level profiling of APL applications.
 
Dyalog's Input Method Editor (IME), used to control keyboard layouts, was redesigned.
 
[[Idiom recognition]] was improved: the append idiom <source lang=apl inline>,←</source> was extended and a new append idiom <source lang=apl inline>⍪←</source> was added, as well as a new join idiom <source lang=apl inline>⍪/</source>. Tack-[[reduce]] idioms <source lang=apl inline>⊣⌿</source>, <source lang=apl inline>⊣/</source>, <source lang=apl inline>⊢⌿</source>, and <source lang=apl inline>⊢/</source> to obtain the first or last [[major cell]] of an array, or the first or last column of a matrix, were added. Euler's idiom <source lang=apl inline>*○</source>, producing a unit complex number, was also added.
 
[[Dyadic Grade]] with a [[Bind|bound]] left argument was improved by allowing a [[retained hash]] of that left argument, in order to avoid reprocessing it during every invocation of Grade.
 
A new [[error message]], [[INTERNAL ERROR]] (99) was added. Several [[I-beam]]s related to Unix forks were added.


== 13.1 ==
== 13.1 ==

Navigation menu