Short and Shallow Output

When you generate a very large output expression in Mathematica, you often do not want to see the whole expression at once. Rather, you would first like to get an idea of the general structure of the expression, and then, perhaps, go in and look at particular parts in more detail.

The functions Short and Shallow allow you to see "outlines" of large Mathematica expressions.

Short[expr]show a one-line outline of expr
Short[expr,n]show an n-line outline of expr
Shallow[expr]show the "top parts" of expr
Shallow[expr,{depth,length}]show the parts of expr to the specified depth and length

Showing outlines of expressions.

This generates a long expression. If the whole expression were printed out here, it would go on for 23 lines.
In[1]:=
Click for copyable input
This gives a one-line "outline" of . The indicates the number of terms omitted.
In[2]:=
Click for copyable input
Out[2]//Short=

When Mathematica generates output in a textual format such as OutputForm, it first effectively writes the output in one long row. Then it looks at the width of text you have asked for, and it chops the row of output into a sequence of separate "lines". Each of the "lines" may of course contain superscripts and built-up fractions, and so may take up more than one actual line on your output device. When you specify a particular number of lines in Short, Mathematica takes this to be the number of "logical lines" that you want, not the number of actual physical lines on your particular output device.

Here is a four-line version of . More terms are shown in this case.
In[3]:=
Click for copyable input
Out[3]//Short=

Short works in other formats too, such as StandardForm and TraditionalForm. When using these formats, linewrapping is determined by the notebook interface when displaying the output rather than by the kernel when creating the output. As a result, setting the number of lines generated by Short can only approximate the actual number of lines displayed onscreen.

You can use Short with other output forms, such as InputForm.
In[4]:=
Click for copyable input
Out[4]//Short=

Short works by removing a sequence of parts from an expression until the output form of the result fits on the number of lines you specify. Sometimes, however, you may find it better to specify not how many final output lines you want, but which parts of the expression to drop. Shallow[expr, {depth, length}] includes only length arguments to any function, and drops all subexpressions that are below the specified depth.

Shallow shows a different outline of .
In[5]:=
Click for copyable input
Out[5]//Shallow=
This includes only 10 arguments to each function, but allows any depth.
In[6]:=
Click for copyable input
Out[6]//Shallow=

Shallow is particularly useful when you want to drop parts in a uniform way throughout a highly nested expression, such as a large list structure returned by Trace.

Here is the recursive definition of the Fibonacci function.
In[7]:=
Click for copyable input
Out[7]=
This generates a large list structure.
In[8]:=
Click for copyable input
You can use Shallow to see an outline of the structure.
In[9]:=
Click for copyable input
Out[9]//Shallow=
Short gives you a less uniform outline, which can be more difficult to understand.
In[10]:=
Click for copyable input
Out[10]//Short=

When generated outputs in the notebook interface are exceedingly large, Mathematica automatically applies Short to the output. This user interface enhancement prevents Mathematica from spending a lot of time generating and formatting the printed output for an evaluation which probably generated output you did not expect.

Typically, an assignment like this would have a semicolon at the end.
In[11]:=
Click for copyable input
Out[11]=

The buttons in the user interface allow you to control how much of the output you see. The size threshold at which this behavior takes effect is determined by the byte count of the output expression. That byte count can be set in the Preferences dialog of the notebook interface, which is opened by the Set Size Limit button.

New to Mathematica? Find your learning path »
Have a question? Ask support »