My argument here is really for consistency.

The beauty of a REPL, for a new user, is being able to hack through a few 
lines of code, see how they work in practice, and then use them 
confidently. It really speeds learning a new package, understanding a 
language feature, or just coding something new.

I'd be perfectly happy if, in the REPL, when I call `myplot = plot(x,y)`, I 
get back a plot object that I then need to display with `display(myplot)`, 
or by adding `plot(x,y,show=true)`, or by explicitly defaulting show=true 
with `pyplot(show=true)`. If that happened in the REPL, I'd quickly learn 
Tom's paradigm, `plot` "constructs a visualization of the input data" - and 
I would be benefiting from the REPL as part of my toolkit, and I'd be 
happy. But when there's a difference between how the REPL works and how the 
same command works in a code block, then I lose the benefit of the REPL, 
worse, the REPL teaches me one way of doing things that I then have to 
unlearn in an non-intuitive way. 

Whether it's done by default one way or another isn't important if 
consistency is maintained.  I think the disconnect in this discussion is 
rooted in the inconsistency of behavior between REPL and code block. And I 
believe that will be a pain point for an untold number of future users.

In any case, lovely discussion here. :)

Reply via email to