APL syntax: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
Miraheze>RikedyP
Miraheze>Adám Brudzewsky
No edit summary
Line 7: Line 7:


== Example array definitions ==
== Example array definitions ==
<pre class="language-apl">
<source lang=apl>
       simplenumvec←1 2 3 4 ⍝ A simple numeric vector
       simplenumvec←1 2 3 4 ⍝ A simple numeric vector
       simplecharvec←'ABCD' ⍝ A simple character vector
       simplecharvec←'ABCD' ⍝ A simple character vector
</pre>
</source>


== Example function definition ==
== Example function definition ==
<pre class="language-apl">
<source lang=apl>
     ∇  r←l Tradfn r               
     ∇  r←l Tradfn r               
[1]    ⍝ An infix (dyadic) tradfn
[1]    ⍝ An infix (dyadic) tradfn
[2]    r←l r                     
[2]    r←l r                     
     ∇   
     ∇   
</pre>
</source>
{{Works in|[[Dyalog APL]], [[APL2]], [[GNU APL]], [[NARS2000]]}}
{{Works in|[[Dyalog APL]], [[APL2]], [[GNU APL]], [[NARS2000]]}}


== Example operator definition ==
== Example operator definition ==
<pre class="language-apl">
<source lang=apl>
     ∇ r←larg(Main OVER PreProc)rarg                                                 
     ∇ r←larg(Main OVER PreProc)rarg                                                 
[1]    r←(PreProc larg)Main(PreProc rarg)                                             
[1]    r←(PreProc larg)Main(PreProc rarg)                                             
     ∇   
     ∇   
</pre>
</source>
== Example function application ==
== Example function application ==
<pre class="language-apl">
<source lang=apl>
       ÷3        ⍝ Prefix primitive function
       ÷3        ⍝ Prefix primitive function
0.3333333333
0.3333333333
Line 37: Line 37:
       2+/1 2 3 4 ⍝ Infix primitive derived function
       2+/1 2 3 4 ⍝ Infix primitive derived function
3 5 7
3 5 7
</pre>
</source>


== Scoping rules ==
== Scoping rules ==

Revision as of 22:19, 30 October 2019

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

Template:APL programming language