Control structure: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
(Created page with "Some modern versions of APL include a set of keywords for controlling the flow of control. Such keywords allow programmers to create '''control stru...")
 
Line 6: Line 6:
For example, a function implementing the [[wikipedia:TPK algorithm|Trabb Pardo–Knuth algorithm]] using control structures:
For example, a function implementing the [[wikipedia:TPK algorithm|Trabb Pardo–Knuth algorithm]] using control structures:
<source lang=apl>
<source lang=apl>
∇ {res}←trabb
∇ {res}←trabb;f;S;i;a;y
   f←{(0.5*⍨|⍵)+5×⍵*3}
   f←{(0.5*⍨|⍵)+5×⍵*3}
   S←,⍎{⍞←⍵ ⋄ (≢⍵)↓⍞}'Please, enter 11 numbers: '
   S←,⍎{⍞←⍵ ⋄ (≢⍵)↓⍞}'Please, enter 11 numbers: '

Revision as of 09:34, 19 July 2020

Some modern versions of APL include a set of keywords for controlling the flow of control. Such keywords allow programmers to create control structures which are commonly used in procedural programming languages.

Example

Dyalog APL has a rich set of flow control keywords, including :If, :While, :Repeat, :For (with the supplementary control words :In and :InEach), :Select, :With, :Trap, :Hold and :Disposable. The use of control structures defined by these keywords is only allowed in defined functions.

For example, a function implementing the Trabb Pardo–Knuth algorithm using control structures:

∇ {res}←trabb;f;S;i;a;y
  f←{(0.5*⍨|⍵)+5×⍵*3}
  S←,⍎{⍞←⍵ ⋄ (≢⍵)↓⍞}'Please, enter 11 numbers: '
  :For i a :InEach (⌽⍳≢S)(⌽S)
      :If 400<y←f(a)
          ⎕←'Too large: ',⍕i
      :Else
          ⎕←i,y
      :EndIf
  :EndFor
∇

External links

Tutorials

Documentation