Personally, I love the way Julia outputs large matrices - some rows from the start, followed by "..." and then some rows from the end. If the matrix is both wide and tall, it's truncated in both directions, but the central point is that it's truncated in the middle, rather than on either end. That lets me quickly inspect the entire thing - if it both starts and ends as I expect, it's probably OK even in the parts that I don't see. If i'm not sure, I can always use some more (or less) fine-tuned command (e.g. @show) to look at the entire thing.
The ideal solution to me, would be to do the same thing for all kinds of output: the default way of displaying it would be to truncate it in the middle, and if the user wants something else, they can manually request it. And then, of course, it would be awesome if they could also manually pipe it to something that works just like less, tail or whatever from the native terminal. But I think making long output in the REPL paginated by default is a bad idea - if I type something that results in a large amount of output just because I forgot to add ; at the end, suddenly I have to get out of the paginated output view before I can type my next command. I don't feel like making the "read-eval-print-loop" more like a "read-eval-print-getoutofpaginatedview-loop"... // T On Friday, May 23, 2014 10:06:11 AM UTC+2, Tamas Papp wrote: > > I don't think a pager is the right solution, for the following reasons: > > 1. typing directly in to the REPL running in a terminal is not an > efficient way to program anything nontrivial, most users would use an > IDE (incl Emacs) that would allow scrolling and inspection of a value, > > 2. how many elements to print from large arrays etc could be controlled > by something like Common Lisp's *PRINT-LENGTH*, eg see > http://clhs.lisp.se/Body/v_pr_lev.htm (sorry if this already exists in > Julia, could not find it). > > Best, > > Tamas > > On Thu, May 22 2014, Stefan Karpinski <[email protected] <javascript:>> > wrote: > > > Now that we have native terminal support, it would be a reasonable > project > > to write a pager in Julia. Why write our own pager (you ask)? Because it > > could allow you to do things like efficiently page around a huge array > > without having to print the whole thing. You could, e.g., instantly page > to > > the bottom right of a massive, distributed array, without any lag at > all. > > Of course, the thing is you want to use shared infrastructure for doing > > this kind of data exploration in the terminal, IJulia, and maybe your > > editor. But the pager part could be pretty decoupled from that. > > > > > > On Thu, May 22, 2014 at 3:30 PM, Kevin Squire > > <[email protected]<javascript:>>wrote: > > > > >> Thanks! > >> > >> > >> On Thursday, May 22, 2014 11:52:12 AM UTC-7, Bob Nnamtrop wrote: > >> > >>> OK done. See https://github.com/JuliaLang/julia/issues/6921 > >>> > >>> > >>> On Thu, May 22, 2014 at 12:20 PM, Kevin Squire > >>> <[email protected]>wrote: > > >>> > >>>> I agree that that would be nice. Would you be willing to open up an > >>>> issue for this? > >>>> > >>>> > >>>> On Thu, May 22, 2014 at 11:04 AM, Bob Nnamtrop > >>>> <[email protected]>wrote: > > >>>> > >>>>> I often find myself wishing for a pager in the repl when outputing > >>>>> large amount of output. I see that there is a Base.less but it is > only used > >>>>> on files and not for outputting other stuff in the repl. In fact, it > would > >>>>> be great to have support for less, head, and tail like functionality > for > >>>>> looking at arrays, hashes, etc. Thus to be able to do: > >>>>> > >>>>> arr |> less > >>>>> or > >>>>> less(arr) > >>>>> or > >>>>> arr |> tail > >>>>> > >>>>> In addition, I think having the output of show() automatically go > >>>>> through less if it longer that one page would be great. I hate > seeing 100's > >>>>> of pages of output fly by when, e.g., a huge hash gets "shown" at > the > >>>>> prompt (I just cannot seem to get in the habit of typing the ; at > the right > >>>>> time). This behavior could be configurable of course. > >>>>> > >>>>> Bob > >>>>> > >>>> > >>>> > >>> > >
