This is the Dyalog APL session log from a presentation on symbolic array languages given 20 May 2010 at the Mathematics Faculty of the University of Belgrade.

The language used is Dyalog, an APL interpreter free for educational use.

⍝ SYMBOLIC ARRAY LANGUAGES

      ⍝ not compiled, but INTERPRETED
      2+2
4
      2×2
4
      2=2
1

      ⍝ the 'hello world' program is trivial
      'hello world'
hello world

      ⍝ arrays are not constructs: ALL data are arrayed
      2 + 1 2 3 
3 4 5
      2 × 1 2 3
2 4 6
      2 ÷ 1 2 3
2 1 0.6666666667
      2 | 1 2 3 4      ⍝ modulus
1 0 1 0
      2 * 1 2 3 4      ⍝ power
2 4 8 16

      ⍝ not LEXICAL (based on words), but SYMBOLIC (like math)

        ? 6 7 8 9      ⍝ rand()  
6 4 8 3
        ~ 0 1 1 0      ⍝ not()
1 0 0 1

      ⍝ Latin not enough for you?
      ⍝ nor us!
      2 ⌈ 1 2 3 4      ⍝ max
2 2 3 4
      ⍋ 35 2 19 7      ⍝ grade
2 4 3 1

      'Хелло Свет'
Хелло Свет

      ⍳6               ⍝ index
1 2 3 4 5 6
      2⍴⍳6             ⍝ reshape
1 2
      2 3 ⍴⍳6
1 2 3
4 5 6
      2 3 4 ⍴ ⍳6
1 2 3 4
5 6 1 2
3 4 5 6
       
1 2 3 4
5 6 1 2
3 4 5 6

      2 = 2 3 4 ⍴ ⍳6
0 1 0 0
0 0 0 1
0 0 0 0
       
0 1 0 0
0 0 0 1
0 0 0 0


      ⍝ {back to PowerPoint}

      ⍝ a world of arrays, 
      ⍝ functions that return arrays,
      ⍝ and higher-order functions ('operators')

      1+2+3+4+5+6
21
      +/1 2 3 4 5 6
21
      1×2×3×4×5×6
720
      ×/1 2 3 4 5 6
720
      ⌈/1 2 3 4 5 6
6
      ⌊/1 2 3 4 5 6
1

      2 3 ⍴ ⍳6
1 2 3
4 5 6
      ⌈/2 3⍴⍳6
3 6
      +/2 3⍴⍳6
6 15
      +⌿2 3⍴⍳6
5 7 9

      sum←+/
      ⍳6
1 2 3 4 5 6
      sum ⍳6
21
      product←×/
      product ⍳6
720

      ⍝ 'currying' arguments to functions
      double←×∘2
      double ⍳6
2 4 6 8 10 12
      halve←÷∘2
      halve⍳6
0.5 1 1.5 2 2.5 3
      cube←*∘3
      cube ⍳6
1 8 27 64 125 216
      sqrt←*∘(÷2)
      sqrt ⍳6
1 1.414213562 1.732050808 2 2.236067977 2.449489743

      ⍝ 'reflect' function arguments
      2+2
4
      +⍨2
4
      +⍨3
6
      square←×⍨
      square ⍳6
1 4 9 16 25 36

      ⍝ tabulating functions
      1 2 3 ∘.+ 1 2 3
2 3 4
3 4 5
4 5 6
      1 2 3 ∘.× 1 2 3
1 2 3
2 4 6
3 6 9
      1 2 3 ∘.> 1 2 3
0 0 0
1 0 0
1 1 0

      1 2 3 ∘.= 1 2 3
1 0 0
0 1 0
0 0 1
            ∘.=⍨1 2 3
1 0 0
0 1 0
0 0 1
            ∘.=⍨ ⍳ 3
1 0 0
0 1 0
0 0 1

      ⍝ compose two functions together
      im ←  ∘.=⍨∘⍳
      im 5
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1


      plus←+
      2 plus 2
4
      plus←{⍺+⍵}
      2 plus ⍳6
3 4 5 6 7 8

         20⍴100
100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100
        ?20⍴100
47 52 67 41 61 99 16 68 35 55 53 83 2 28 65 55 92 27 98 25
        ?20⍴100
85 70 46 82 3 17 71 71 44 59 76 100 70 28 76 18 1 50 8 17
        ?20⍴100
91 79 75 44 1 59 52 7 55 39 22 39 63 66 71 54 29 82 38 69
      q←?20⍴100
             +/q
728
                  ⍴q
20
            (+/q)÷⍴q
36.4
                mean←{(+/⍵)÷⍴⍵}
      mean q
36.4

      {}2+2
      {}⍳6

      {⍵×⍵}2
4
      {⍵×⍵}3
9

      10 12,3 4 ⍝ catenate joins two arrays
10 12 3 4
      ∘.,⍨⍳3
 1 1  1 2  1 3 
 2 1  2 2  2 3 
 3 1  3 2  3 3 

      'Здраво' 'Хелло'∘.{⍺,' ',⍵} 'Свет' 'Мир'
 Здраво Свет  Здраво Мир 
 Хелло Свет   Хелло Мир  

      ⍝ Erastosthenes' sieve

                    ⍳20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
            2 41 13∊⍳20
1 0 1
           ~2 41 13∊⍳20
0 1 0
      0 1 0/2 41 13
41
          ⍳20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
        1↓⍳20
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
      n←1↓⍳20
           ∘.×⍨n
 4  6  8  10  12  14  16  18  20  22  24  26  28  30  32  34  36  38  40
 6  9 12  15  18  21  24  27  30  33  36  39  42  45  48  51  54  57  60
 8 12 16  20  24  28  32  36  40  44  48  52  56  60  64  68  72  76  80
10 15 20  25  30  35  40  45  50  55  60  65  70  75  80  85  90  95 100
12 18 24  30  36  42  48  54  60  66  72  78  84  90  96 102 108 114 120
14 21 28  35  42  49  56  63  70  77  84  91  98 105 112 119 126 133 140
16 24 32  40  48  56  64  72  80  88  96 104 112 120 128 136 144 152 160
18 27 36  45  54  63  72  81  90  99 108 117 126 135 144 153 162 171 180
20 30 40  50  60  70  80  90 100 110 120 130 140 150 160 170 180 190 200
22 33 44  55  66  77  88  99 110 121 132 143 154 165 176 187 198 209 220
24 36 48  60  72  84  96 108 120 132 144 156 168 180 192 204 216 228 240
26 39 52  65  78  91 104 117 130 143 156 169 182 195 208 221 234 247 260
28 42 56  70  84  98 112 126 140 154 168 182 196 210 224 238 252 266 280
30 45 60  75  90 105 120 135 150 165 180 195 210 225 240 255 270 285 300
32 48 64  80  96 112 128 144 160 176 192 208 224 240 256 272 288 304 320
34 51 68  85 102 119 136 153 170 187 204 221 238 255 272 289 306 323 340
36 54 72  90 108 126 144 162 180 198 216 234 252 270 288 306 324 342 360
38 57 76  95 114 133 152 171 190 209 228 247 266 285 304 323 342 361 380
40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 400
         n∊∘.×⍨n
0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 0 1
        ~n∊∘.×⍨n
1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0
       (~n∊∘.×⍨n)/n
2 3 5 7 11 13 17 19
      {(~⍵∊∘.×⍨⍵)/⍵}∘{1↓⍳⍵}20
2 3 5 7 11 13 17 19
      sieve←{(~⍵∊∘.×⍨⍵)/⍵}∘{1↓⍳⍵}
      sieve 1000                           
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191
      193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389
      397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607
      613 617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829
      839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997

      ⍝ Conway's Game of Life...