APL syntax: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
m (7 revisions imported: Migrate from miraheze)
m (link box)
Line 45: Line 45:
=== Operators ===
=== Operators ===


{{APL dialects}}
{{APL syntax}}

Revision as of 06:52, 19 April 2020

APL's core syntactic principles are:

  • Arrays as first class citizens
  • Functions take arrays as argument(s) and produce arrays as result
  • Functions have long right scope
  • Operators take functions and/or arrays as operand(s) and produce derived functions
  • Operators have long left scope

Example array definitions

      simplenumvec←1 2 3 4 ⍝ A simple numeric vector
      simplecharvec←'ABCD' ⍝ A simple character vector

Example function definition

    ∇  r←l Tradfn r              
[1]    ⍝ An infix (dyadic) tradfn
[2]    r←l r                     
    ∇

Example operator definition

     ∇ r←larg(Main OVER PreProc)rarg                                                 
[1]    r←(PreProc larg)Main(PreProc rarg)                                            
     ∇

Example function application

      ÷3         ⍝ Prefix primitive function
0.3333333333
      1+2        ⍝ Infix primitive function
3
      +/1 2 3 4  ⍝ Prefix primitive derived function
10
      2+/1 2 3 4 ⍝ Infix primitive derived function
3 5 7

Scoping rules

Functions

Operators

APL syntax [edit]
General Comparison with traditional mathematicsPrecedenceTacit programming (Train, Hook, Split composition)
Array Numeric literalStringStrand notationObject literalArray notation (design considerations)
Function ArgumentFunction valenceDerived functionDerived operatorNiladic functionMonadic functionDyadic functionAmbivalent functionDefined function (traditional)DfnFunction train
Operator OperandOperator valenceTradopDopDerived operator
Assignment MultipleIndexedSelectiveModified
Other Function axisBracket indexingBranchStatement separatorQuad nameSystem commandUser commandKeywordDot notationFunction-operator overloadingControl structureComment