<br><br><div class="gmail_quote">On Fri, Jun 15, 2012 at 1:31 PM, Bob McElrath <span dir="ltr">&lt;<a href="mailto:bob+ipython@mcelrath.org" target="_blank">bob+ipython@mcelrath.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

One of my long-standing complaints about notebook-style worksheets (Maple,<br>
Mathematica) is the large and hidden namespace of defined symbols.  If one is<br>
not careful, it&#39;s easy to end up with some element of worksheet-state that is<br>
not what you think it is, and end up with garbage results.  This can be very<br>
difficult to track down.  And because worksheets are generally not executed top<br>
to bottom, it often results in difficult-to-reproduce errors.<br>
<br>
I discovered this today with IPython&#39;s notebook and gamma(), which turns out to<br>
be numpy.random.gamma() rather than the Euler Gamma function math.gamma() or<br>
scipy.special.gamma().<br>
<br>
This is because I ran ipython --pylab, but it highlights a bigger problem: how<br>
does the user know which symbols are defined?  I have been thinking lately of an<br>
addition to the notebook interface: a side-panel showing everything<br>
defined/imported in the kernel.  This would further allow the user to inspect<br>
the output of commands by clicking on kernel data structures, rather than<br>
wasting a cell just to print some output.  Personally I always end up with very<br>
messy worksheets, because I insert a lot of print or plot commands, just to<br>
explore a data structure or function.<br></blockquote><div><br></div><div>This is a popular idea - a namespace view, sidebar, etc. a la matlab or what have you.  I&#39;ve even implemented a simple one myself (purely with javascript in a markdown cell) as a test of the recently reorganized javascript that allows decoupling of execution from cells, based on %whos.</div>

<div><br></div><div>It&#39;s not difficult, and should probably be done as a widget-style thing.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Another possible use of such a thing would be a non-modifying cell: a cell that<br>
refuses to change the state of the kernel by modifying variables, but could be<br>
used to print/plot/explore existing data structures.  Then when one has found<br>
the most desirable representation, that could be copied/moved to the worksheet.<br></blockquote><div><br></div><div>If you want to execute without editing the document,</div><div>this is what the &#39;run-in-place&#39; (ctrl-Enter) is for - running a few commands in place,</div>

<div>always overwriting the same cell,</div><div>because you don&#39;t actually want to keep the effects in your document.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<br>
Perhaps there are other creative ways to avoid the user having to manage an<br>
approximation of the kernel state in their head.<br>
<br>
--<br>
Cheers, Bob McElrath<br>
<br>
&quot;The individual has always had to struggle to keep from being overwhelmed by<br>
the tribe.  If you try it, you will be lonely often, and sometimes frightened.<br>
But no price is too high to pay for the privilege of owning yourself.&quot;<br>
    -- Friedrich Nietzsche<br>
_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
</blockquote></div><br>