⍝ Fold (reduce) from the left:

    'abracadabra'{⍺~⍵⊃⍺} foldl 1 2              ⍝ rem all 'a's and all 'r's.
bcdb
    'abracadabra'{⍺~⍵⊃⍺} foldl 2 1              ⍝ rem all 'b's and all 'a's.
rcdr
    repl←subs⍨                                  ⍝ ⍺ with ⍵ replacement.

    pairs ← ('ny' 'kes')'iu'                    ⍝ from/to pairs

    'many a mickle'repl foldl pairs             ⍝ multiple letter replacement.
makes a muckle

    disp 0 ,∘⊂⍨ foldl 2 5⍴⍳10                   ⍝ higher rank arrays.
┌→─┬───────────────┐
↓  │┌→┬───────────┐│
│  ││ │┌→┬───────┐││
│  ││ ││ │┌→┬───┐│││
│5 ││4││3││2│1 0││││
│  ││ ││ │└─┴~─→┘│││
│  ││ │└─┴──────→┘││
│  │└─┴──────────→┘│
├~─┼──────────────→┤
│  │┌→┬───────────┐│
│  ││ │┌→┬───────┐││
│  ││ ││ │┌→┬───┐│││
│10││9││8││7│6 0││││
│  ││ ││ │└─┴~─→┘│││
│  ││ │└─┴──────→┘││
│  │└─┴──────────→┘│
└~─┴──────────────→┘

    scanl←{⎕ML←0           ⍝ Dyadic Scan from the left (cf: ##.ascan).
        ⌽↑⍺⍺{
            (⊂(⊃⍵)⍺⍺ ⍺),⍵
        }/(⌽⍵),⊂⊂⍺
    }

    disp 'hello' ⌽⍨ scanl 1 1 0 ¯1 ¯1
┌→────┬─────┬─────┬─────┬─────┬─────┐
│hello│elloh│llohe│llohe│elloh│hello│
└────→┴────→┴────→┴────→┴────→┴────→┘

Back to: code

Back to: Workspaces

Trouble seeing APL font?