# 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.

In[1]:= |

In[2]:= |

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.

In[3]:= |

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.

In[4]:= |

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.

In[5]:= |

Out[5]//Shallow= |

In[6]:= |

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.

In[7]:= |

Out[7]= |

In[8]:= |

In[9]:= |

Out[9]//Shallow= |

In[10]:= |

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.

In[11]:= |

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.