3,038
edits
m (Text replacement - "array languages]]" to "array languages]]Category:Leading axis languages") |
(→Releases: Add Table to release 19) |
||
(26 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Infobox array language | {{Infobox array language | ||
| logo = [[File:Sharp APL logo.png]] | |||
| array model = [[Flat array model|flat]] with [[Box|boxes]] | | array model = [[Flat array model|flat]] with [[Box|boxes]] | ||
| index origin = 0 or 1 | | index origin = 0 or 1 | ||
Line 5: | Line 6: | ||
| numeric types = [[complex]] floats | | numeric types = [[complex]] floats | ||
| unicode support = none | | unicode support = none | ||
| released = around 1979 | | released = 1976 via [[time-sharing]]; around 1979 as a product | ||
| withdrawn = around 1993 | | withdrawn = around 1993 | ||
| latest release | | latest release version = 20 / 1989 | ||
| platforms = S/370, x86 | | platforms = S/370, x86 | ||
| operating systems = DOS/390, DOS, UNIX (AIX, Solaris), Linux | | operating systems = DOS/390, DOS, UNIX (AIX, Solaris), Linux | ||
Line 13: | Line 14: | ||
| developer = [[I.P. Sharp Associates]] | | developer = [[I.P. Sharp Associates]] | ||
| influenced by = [[APL\360]] | | influenced by = [[APL\360]] | ||
| influenced = [[SAX]], [[J]], [[A+]], [[K]] | | influenced = [[SAX]], [[J]], [[A+]], [[K]], [[Dyalog APL]], [[SHARP APL/HP]] | ||
| file ext = .saw, .saf, .sam | | file ext = .saw, .saf, .sam | ||
| download = [http://www.sigapl.org/Archives/waterloo_archive/apl/sharp.apl/index.html SIGAPL] | | download = [http://www.sigapl.org/Archives/waterloo_archive/apl/sharp.apl/index.html SIGAPL] | ||
}} | }} | ||
[[File:Old SHARP APL.png|thumb|right|SHARP APL running under DOSBox]] | [[File:Old SHARP APL.png|thumb|right|SHARP APL running under DOSBox]] | ||
'''SHARP APL''' was | '''SHARP APL''' was an APL implementation offered by [[I.P. Sharp Associates]] (IPSA), originally as part of its [[time-sharing]] service and later as a stand-alone product. It was split off from [[STSC]]'s [[APL*PLUS]], which until then had been sold jointly by the two companies. SHARP APL was the source of many developments in [[flat array theory]], driven by [[Ken Iverson]] and other APL designers at IPSA. | ||
== | == Releases == | ||
A partial list of SHARP's major releases is shown. | |||
{|class=wikitable | |||
! Number !! Released !! Features | |||
{| class=wikitable | |||
! | |||
|- | |- | ||
| | | || 1980 || Compress extended to [[Replicate]]; [[LCM]] and [[GCD]]; [[Grade]] on rank >1<ref>IPSA. [https://www.softwarepreservation.org/projects/apl/Manuals/SharpAPLManualCorrections/view SHARP APL Reference Manual Additions and Corrections, June 1981]</ref> | ||
|- | |- | ||
| < | | || 1981-05 || Enclosed arrays; [[Enclose]] (<syntaxhighlight lang=apl inline><</syntaxhighlight>), [[Mix|Disclose]] (<syntaxhighlight lang=apl inline>></syntaxhighlight>), [[Match]] (<syntaxhighlight lang=apl inline>≡</syntaxhighlight>); operators [[Atop|Over]] (<syntaxhighlight lang=apl inline>⍥</syntaxhighlight>), [[Over|On]] (<syntaxhighlight lang=apl inline>⍤</syntaxhighlight>), [[Under|With]] (<syntaxhighlight lang=apl inline>¨</syntaxhighlight>); [[complex number]]s<ref>IPSA Newsletter July/August 1981 ([https://www.snakeisland.com/IPSANewsletter_1981_07_08.pdf pdf])</ref> | ||
|- | |- | ||
| < | | || 1982-05 || Generalized [[determinant]] (<syntaxhighlight lang=apl inline>.</syntaxhighlight>); debugging and formatting improvements<ref>IPSA Newsletter July/August 1982 ([https://www.snakeisland.com/IPSANewsletter_1982_07_08.pdf pdf])</ref> | ||
|- | |- | ||
| | | || 1982-11 || [[Complex Floor]], Ceiling, and Residue; reference-counted implementation<ref>IPSA Newsletter November/December 1982 ([https://www.snakeisland.com/IPSANewsletter_1982_11_12.pdf pdf])</ref> | ||
|- | |- | ||
| < | | 15 || 1983-05 || [[Rank operator]] and [[Function rank]]; [[Left|Lev]] (<syntaxhighlight lang=apl inline>⊣</syntaxhighlight>), [[Right|Dex]] (<syntaxhighlight lang=apl inline>⊢</syntaxhighlight>), [[Link]] (<syntaxhighlight lang=apl inline>⊃</syntaxhighlight>)<ref>[https://www.jsoftware.com/papers/satn45.htm "Language Extensions of May 1983"]. SATN-45, 1983-05-02.</ref> | ||
|- | |- | ||
| < | | 17 || 1985-01<ref>York University Computer Museum. [http://www.cse.yorku.ca/museum/collections/IPSA/ipsa_col.html SHARP APL collection catalogue].</ref> || | ||
|- | |- | ||
| < | | 19 || 1987-03 || Short left argument for [[Take]]/[[Drop]]; [[Table]] (<syntaxhighlight lang=apl inline>⍪</syntaxhighlight>)<ref>[[Robert Bernecky]]. [https://dl.acm.org/citation.cfm?id=55632 An Introduction to Function Rank] at [[APL88]]. [[APL Quote Quad]], Volume 18, Issue 2. December 1987.</ref> | ||
|- | |- | ||
| < | | 20 || 1989-09 || [[Find|In]] (<syntaxhighlight lang=apl inline>⍷</syntaxhighlight>), [[Nubsieve]] (<syntaxhighlight lang=apl inline>≠</syntaxhighlight>), [[Raze]] (<syntaxhighlight lang=apl inline>↓</syntaxhighlight>); padding for [[Mix|Disclose]] (<syntaxhighlight lang=apl inline>></syntaxhighlight>)<ref>[[IPSA]]. [https://archive.org/details/sharp-apl-release-20.0-guide-for-apl-programmers "SHARP APL Release 20.0: Guide for APL Programmers"].</ref> | ||
|} | |||
== Primitive functions == | |||
The primitives shown here are those for SHARP APL around 1987, near the end of the decline of [[time-sharing]] APL. Some primitives from [[A Dictionary of APL]] were added after this, including [[Find|In]] (<syntaxhighlight lang=apl inline>⍷</syntaxhighlight>), [[Nubsieve]] (<syntaxhighlight lang=apl inline>≠</syntaxhighlight>), and [[Raze]] (<syntaxhighlight lang=apl inline>↓</syntaxhighlight>), and these appear in [[SAX]]. | |||
=== Scalar === | |||
All scalar functions have rank zero. | |||
{| class=wikitable | |||
! Glyph !! Monadic !! Dyadic | |||
|- | |||
| <syntaxhighlight lang=apl inline>+</syntaxhighlight> || [[Conjugate]] || [[Addition]] | |||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>-</syntaxhighlight> || [[Negate]] || [[Subtraction]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>×</syntaxhighlight> || [[Signum]] || [[Multiplication]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>÷</syntaxhighlight> || [[Reciprocal]] || [[Division]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>*</syntaxhighlight> || [[Exponential]] || [[Power (function)|Power]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍟</syntaxhighlight> || [[Natural Logarithm]] || [[Logarithm|Base-⍺ Logarithm]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>|</syntaxhighlight> || [[Magnitude]] || [[Residue]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>!</syntaxhighlight> || [[Factorial]] || [[Binomial]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⌊</syntaxhighlight> || [[Floor]] || [[Minimum]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⌈</syntaxhighlight> || [[Ceiling]] || [[Maximum]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>○</syntaxhighlight> || [[Pi Times]] || [[Circle functions]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>∧</syntaxhighlight> || || [[And]]/[[LCM]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>∨</syntaxhighlight> || || [[Or]]/[[GCD]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍲</syntaxhighlight> || || [[Nand]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍱</syntaxhighlight> || || [[Nor]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>~</syntaxhighlight> || [[Not]] || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>?</syntaxhighlight> || [[Roll]] || See [[#Non-scalar|Non-scalar]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>=</syntaxhighlight> || || [[Equals]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>≠</syntaxhighlight> || || [[Not Equals]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline><</syntaxhighlight> || See [[#Non-scalar|Non-scalar]] || [[Less Than]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>≤</syntaxhighlight> || || [[Less Than or Equal]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>≥</syntaxhighlight> || || [[Greater Than or Equal]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>></syntaxhighlight> || See [[#Non-scalar|Non-scalar]] || [[Greater Than]] | ||
|} | |} | ||
=== | === Non-scalar === | ||
{| class=wikitable | {| class=wikitable | ||
! Glyph !! Rank !! Monadic | ! Glyph !! Rank !! Monadic !! Ranks !! Dyadic | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⌹</syntaxhighlight> || 2 || [[Matrix inverse]] || ∞ 2 || [[Matrix divide]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>?</syntaxhighlight> || || See [[#Scalar|Scalar]] || * * || [[Deal]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⊤</syntaxhighlight> || || || ∞ ∞ || [[Encode]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⊥</syntaxhighlight> || || || ∞ ∞ || [[Decode]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>≡</syntaxhighlight> || || || ∞ ∞ || [[Match]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>∊</syntaxhighlight> || || || 0 ∞ || [[Membership]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍳</syntaxhighlight> || 1 || [[Index Generator|Count]] || 1 0 || [[Index Of]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍋</syntaxhighlight> || ∞ || Numeric [[Grade up]] || ∞ ∞ || Character [[Grade up]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍒</syntaxhighlight> || ∞ || Numeric [[Grade down]] || ∞ ∞ || Character [[Grade down]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍴</syntaxhighlight> || ∞ || [[Shape|Shape of]] || 1 ∞ || [[Reshape]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>↑</syntaxhighlight> || || || 1 ∞ || [[Take]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>↓</syntaxhighlight> || || || 1 ∞ || [[Drop]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline><</syntaxhighlight> || ∞ || [[Enclose]] || || See [[#Scalar|Scalar]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⊃</syntaxhighlight> || ∞ || [[Conditional enclose]] || ∞ ∞ || [[Link]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>></syntaxhighlight> || 0 || [[Mix|Disclose]] || || See [[#Scalar|Scalar]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>,</syntaxhighlight> || ∞ || [[Ravel]] || ∞ ∞ || [[Catenate]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍪</syntaxhighlight> || ∞ || [[Table]] || ∞ ∞ || [[Catenate First]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⌽</syntaxhighlight> || 1 || [[Reverse]] || 0 1 || [[Rotate]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⊖</syntaxhighlight> || ∞ || [[Reverse First]] || ∞ ∞ || [[Rotate First]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍉</syntaxhighlight> || ∞ || Monadic [[Transpose]] || 0 ∞ || Dyadic [[Transpose]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⊣</syntaxhighlight> || ∞ || [[Stop]] || ∞ ∞ || [[Left Identity|Left]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⊢</syntaxhighlight> || ∞ || [[Identity|Pass]] || ∞ ∞ || [[Right Identity|Right]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍕</syntaxhighlight> || ∞ || [[Monadic Format]] || * ∞ || [[Dyadic Format]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍎</syntaxhighlight> || * || [[Execute]] || || | ||
|} | |} | ||
Line 176: | Line 162: | ||
! Glyph !!colspan=2|Operands !!colspan=2|Ranks !! Monadic Call !! Dyadic Call | ! Glyph !!colspan=2|Operands !!colspan=2|Ranks !! Monadic Call !! Dyadic Call | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>/</syntaxhighlight> || || <syntaxhighlight lang=apl inline>f</syntaxhighlight> || <syntaxhighlight lang=apl inline>∞</syntaxhighlight> || || [[Reduce]] || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⌿</syntaxhighlight> || || <syntaxhighlight lang=apl inline>f</syntaxhighlight> || <syntaxhighlight lang=apl inline>∞</syntaxhighlight> || || [[Reduce First]] || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>\</syntaxhighlight> || || <syntaxhighlight lang=apl inline>f</syntaxhighlight> || <syntaxhighlight lang=apl inline>∞</syntaxhighlight> || || [[Scan]] || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍀</syntaxhighlight> || || <syntaxhighlight lang=apl inline>f</syntaxhighlight> || <syntaxhighlight lang=apl inline>∞</syntaxhighlight> || || [[Scan First]] || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>/</syntaxhighlight> || || <syntaxhighlight lang=apl inline>m</syntaxhighlight> || <syntaxhighlight lang=apl inline>∞</syntaxhighlight> || || [[Replicate]] || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⌿</syntaxhighlight> || || <syntaxhighlight lang=apl inline>m</syntaxhighlight> || <syntaxhighlight lang=apl inline>∞</syntaxhighlight> || || [[Replicate First]] || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>\</syntaxhighlight> || || <syntaxhighlight lang=apl inline>m</syntaxhighlight> || <syntaxhighlight lang=apl inline>∞</syntaxhighlight> || || [[Expand]] || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍀</syntaxhighlight> || || <syntaxhighlight lang=apl inline>m</syntaxhighlight> || <syntaxhighlight lang=apl inline>∞</syntaxhighlight> || || [[Expand First]] || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍤</syntaxhighlight> || <syntaxhighlight lang=apl inline>f</syntaxhighlight> || <syntaxhighlight lang=apl inline>g</syntaxhighlight> || <syntaxhighlight lang=apl inline>mg</syntaxhighlight> || <syntaxhighlight lang=apl inline>mg mg</syntaxhighlight> ||colspan=2| On ([[close Over]]) | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍤</syntaxhighlight> || <syntaxhighlight lang=apl inline>f</syntaxhighlight> || <syntaxhighlight lang=apl inline>n</syntaxhighlight> || <syntaxhighlight lang=apl inline>n</syntaxhighlight> || <syntaxhighlight lang=apl inline>n n</syntaxhighlight> ||colspan=2| [[Rank operator|Rank]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍤</syntaxhighlight> || <syntaxhighlight lang=apl inline>m</syntaxhighlight> || <syntaxhighlight lang=apl inline>g</syntaxhighlight> || <syntaxhighlight lang=apl inline>mg</syntaxhighlight> || <syntaxhighlight lang=apl inline>mg mg</syntaxhighlight> ||colspan=2| [[Cut]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>⍥</syntaxhighlight> || <syntaxhighlight lang=apl inline>f</syntaxhighlight> || <syntaxhighlight lang=apl inline>g</syntaxhighlight> || <syntaxhighlight lang=apl inline>mg</syntaxhighlight> || <syntaxhighlight lang=apl inline>mg mg</syntaxhighlight> ||colspan=2| Upon ([[close Atop]]) | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>¨</syntaxhighlight> || <syntaxhighlight lang=apl inline>f</syntaxhighlight> || <syntaxhighlight lang=apl inline>g</syntaxhighlight> || <syntaxhighlight lang=apl inline>mg</syntaxhighlight> || <syntaxhighlight lang=apl inline>mg mg</syntaxhighlight> ||colspan=2| [[close Under|Dual]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>¨</syntaxhighlight> || <syntaxhighlight lang=apl inline>m</syntaxhighlight> || <syntaxhighlight lang=apl inline>g</syntaxhighlight> || <syntaxhighlight lang=apl inline>mg</syntaxhighlight> || ||rowspan="2"|With ([[Bind]]) || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>¨</syntaxhighlight> || <syntaxhighlight lang=apl inline>f</syntaxhighlight> || <syntaxhighlight lang=apl inline>n</syntaxhighlight> || <syntaxhighlight lang=apl inline>mf</syntaxhighlight> || || | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>.</syntaxhighlight> || <syntaxhighlight lang=apl inline>f</syntaxhighlight> || <syntaxhighlight lang=apl inline>g</syntaxhighlight> || <syntaxhighlight lang=apl inline>2</syntaxhighlight> || <syntaxhighlight lang=apl inline>∞ ∞</syntaxhighlight> || [[Determinant]] || [[Inner Product]] | ||
|- | |- | ||
| < | | <syntaxhighlight lang=apl inline>.</syntaxhighlight> || <syntaxhighlight lang=apl inline>m</syntaxhighlight> || <syntaxhighlight lang=apl inline>g</syntaxhighlight> || || <syntaxhighlight lang=apl inline>∞ ∞</syntaxhighlight> || || [[Outer Product]] | ||
|} | |} | ||
Line 305: | Line 285: | ||
| 35 || 1980-08-15 || || || Peter Wooster || Extended [[Grade|Upgrade and Downgrade]] | | 35 || 1980-08-15 || || || Peter Wooster || Extended [[Grade|Upgrade and Downgrade]] | ||
|- | |- | ||
| 36 || 1980-04-20 || || || [[Ken Iverson]] || [[Direct definition|Direct Definition]] | | 36 || 1980-04-20 || || || [[Ken Iverson]] || [[Direct definition (notation)|Direct Definition]] | ||
|- | |- | ||
| 37 || || 1 || 1982-06-01 || John D. Burger || IBM 3270 User Guide | | 37 || || 1 || 1982-06-01 || John D. Burger || IBM 3270 User Guide | ||
Line 330: | Line 310: | ||
|} | |} | ||
== | == References == | ||
<references/> | |||
{{APL dialects}}[[Category:APL dialects]][[Category:Flat array languages]][[Category:Leading axis languages]] | {{APL dialects}}[[Category:APL dialects]][[Category:Flat array languages]][[Category:Leading axis languages]] |