Visualize nested array
APL, 32 bytes

{1=≡⍺:⎕←⍺,⍨⍵↑1↓⍵/'-&gt;'⋄⍺∇¨⍵+1}∘0


Test:

      r
┌────┬─────────────────────────────────────────────────────────────────────────────────────────┐
│Atom│┌──────┬──────────────────────────────┬───────┬────────────────────────────────┬────────┐│
│    ││Proton│┌────────┬────────┬──────────┐│Neutron│┌────────┬──────────┬──────────┐│Electron││
│    ││      ││Up Quark│Up Quark│Down Quark││       ││Up Quark│Down Quark│Down Quark││        ││
│    ││      │└────────┴────────┴──────────┘│       │└────────┴──────────┴──────────┘│        ││
│    │└──────┴──────────────────────────────┴───────┴────────────────────────────────┴────────┘│
└────┴─────────────────────────────────────────────────────────────────────────────────────────┘
      {1=≡⍺:⎕←⍺,⍨⍵↑1↓⍵/'-&gt;'⋄⍺∇¨⍵+1}∘0 ⊢ r 
&gt;Atom
-&gt;Proton
--&gt;Up Quark
--&gt;Up Quark
--&gt;Down Quark
-&gt;Neutron
--&gt;Up Quark
--&gt;Down Quark
--&gt;Down Quark
-&gt;Electron


Explanation:


{...}∘0: run the following function with 0 bound to ⍵:


1=≡⍺:: if the input has depth 1 (i.e. an array that does not contain other arrays):


⍵/'-&gt;': create a string containing ⍵ -s and ⍵ &gt;s, 
1↓: drop the first element,
⍵↑: and take the first ⍵ elements. This results in a string containing ⍵-1 dashes and one &gt;.
⍺,⍨: append the input to it,
⎕←: and output that to the screen

⋄: otherwise,


⍺∇¨⍵+1: add 1 to ⍵ and apply the function to each nested array