⍝ Boxed display of array:

    display 'ABC'(1 4⍴1 2 3 4)(0 1 0⍴0)(⎕SE #)('88',99)
┌→────────────────────────────────────────┐
│ ┌→──┐ ┌→──────┐ ┌┌⊖┐ ┌→───────┐ ┌→────┐ │
│ │ABC│ ↓1 2 3 4│ ⌽↓0│ │ ⎕SE  # │ │88 99│ │
│ └───┘ └~──────┘ └└~┘ └#───────┘ └+────┘ │
└∊────────────────────────────────────────┘

    display 2 2⍴'Tea'(2 1⍴4 2)'&'(2 40)
┌→─────────────┐
↓ ┌→──┐ ┌→┐    │
│ │Tea│ ↓4│    │
│ └───┘ │2│    │
│       └~┘    │
│       ┌→───┐ │
│ &     │2 40│ │
│ -     └~───┘ │
└∊─────────────┘

    display (15⍴1)⍴1
┌┌┌┌┌┌┌┌┌┌┌┌┌┌→┐
↓↓↓↓↓↓↓↓↓↓↓↓↓↓1│
└└└└└└└└└└└└└└~┘
    display (15⍴0 1)⍴'a'
┌┌┌┌┌┌┌┌┌┌┌┌┌┌⊖┐
⌽↓⌽↓⌽↓⌽↓⌽↓⌽↓⌽↓ │
└└└└└└└└└└└└└└─┘

    display ⎕tc
┌→┐
│ │
│ │
│ │
└─┘
    display ⎕tc,⊂''
┌→──────────┐
│       ┌⊖┐ │
│       │ │ │
│ -     └─┘ │
│   - -     │
└∊──────────┘
    display,¨⎕tc
┌→────────────┐
│ ┌→┐ ┌→┐ ┌→┐ │
│ │ │ │ │ │ │ │
│ └─┘ │ │ │ │ │
│     └─┘ └─┘ │
└∊────────────┘
    display,¨16↑⎕av
┌→────────────────────────────────────────────────────────────────┐
│ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ ┌→┐ │
│ ││ │ │ │ │ │ │ │ │ │
│ ││ ││ ││ │	│ │⌶│ │ɫ│ │%│ │'│ │⍺│ │⍵│ │
│ └─┘ └─┘ │ │ │ │ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ └─┘ │
│         └─┘ └─┘                                                 │
└∊────────────────────────────────────────────────────────────────┘

    ⍕display¨('88',99)(88,'99')    ⍝ ambiguous cases.
 ┌→────┐  ┌→────┐ 
 │88 99│  │88 99│ 
 └+────┘  └+────┘ 

    'temp'⎕ns''                                         ⍝ temp space

    display 2 3⍴#(⎕or'display')⎕tc ⍬ '' (⎕or'temp')      ⍝ some tricky cases.
┌→───────────────────────────────────────────────────────────────────────────────────────────────┐
↓     ┌───────────────────────────────────────────────────────────────────────────────┐ ┌→┐      │
│ #   │     ∇display←{⎕IO ⎕ML←0 1                        ⍝ Boxed display of array.    │ │ │      │
│     │[1]                                                                            │ │ │      │
│     │[2]       box←{                                   ⍝ box with type and axes     │ │ │      │
│     │[3]           vrt hrz←(¯1+⍴⍵)⍴¨'│─'               ⍝ vert. and horiz. lines     │ └─┘      │
│     │[4]           top←'─⊖→'[¯1↑⍺],hrz                 ⍝ upper border with axis     │          │
│     │[5]           bot←(⊃⍺),hrz                        ⍝ lower border with type     │          │
│     │[6]           rgt←'┐│',vrt,'┘'                    ⍝ right side with corners    │          │
│     │[7]           lax←'│⌽↓'[¯1↓1↓⍺],¨⊂vrt             ⍝ left side(s) with axes,    │          │
│     │[8]           lft←⍉'┌',(↑lax),'└'                 ⍝ ... and corners            │          │
│     │[9]           lft,(top⍪⍵⍪bot),rgt                 ⍝ fully boxed array          │          │
│     │[10]      }                                                                    │          │
│     │[11]                                                                           │          │
│     │[12]      deco←{⍺←type open ⍵ ⋄ ⍺,axes ⍵}         ⍝ type and axes vector       │          │
│     │[13]      axes←{(-2⌈⍴⍴⍵)↑1+×⍴⍵}                   ⍝ array axis types           │          │
│     │[14]      open←{16::(1⌈⍴⍵)⍴⊂'[ref]' ⋄ (1⌈⍴⍵)⍴⍵}   ⍝ exposure of null axes      │          │
│     │[15]      trim←{(~1 1⍷∧⌿⍵=' ')/⍵}                 ⍝ removal of extra blank cols│          │
│     │[16]      type←{{(1=⍴⍵)⊃'+'⍵}∪,char¨⍵}            ⍝ simple array type          │          │
│     │[17]      char←{⍬≡⍴⍵:'─' ⋄ (⊃⍵∊'¯',⎕D)⊃'#~'}∘⍕    ⍝ simple scalar type         │          │
│     │[18]      line←{(6≠10|⎕DR' '⍵)⊃' -'}              ⍝ underline for atom         │          │
│     │[19]                                                                           │          │
│     │[20]      {                                       ⍝ recursive boxing of arrays:│          │
│     │[21]          0=≡⍵:' '⍪(open ⎕FMT ⍵)⍪line ⍵       ⍝ simple scalar              │          │
│     │[22]          1 ⍬≡(≡⍵)(⍴⍵):'∇' 0 0 box ⎕FMT ⍵     ⍝ object rep: ⎕OR            │          │
│     │[23]          1=≡⍵:(deco ⍵)box open ⎕FMT open ⍵   ⍝ simple array               │          │
│     │[24]          ('∊'deco ⍵)box trim ⎕FMT ∇¨open ⍵   ⍝ nested array               │          │
│     │[25]      }⍵                                                                   │          │
│     │[26]  }                                                                        │          │
│     │     ∇                                                                         │          │
│     └∇──────────────────────────────────────────────────────────────────────────────┘          │
│ ┌⊖┐ ┌⊖┐                                                                               ┌──────┐ │
│ │0│ │ │                                                                               │#.temp│ │
│ └~┘ └─┘                                                                               └∇─────┘ │
└∊───────────────────────────────────────────────────────────────────────────────────────────────┘

⍝∇ display

Back to: code

Back to: Workspaces