# Difference between revisions of "APL syntax"

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
    r←l r
∇
```

## Example operator definition

```     ∇ r←larg(Main OVER PreProc)rarg
    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

### Operators

APL dialects 
Maintained APL+Win (APL*PLUS) ∙ APL2APL64APL\ivCo-dfnsDyalog APLdzaima/APLGNU APLNARS2000ngn/apl
Historical Iverson notationA Programming LanguageA+ (A) ∙ APL#APL.68000APL.SVAPLXAPL\1130APL\360NARSopenAPLRowanSHARP APL (SAX) ∙ VisualAPL (APLNext) ∙ VSAPLYork APL
Derivatives ELIJK (Q, KDB+) ∙ LYaPASNialRAD