Why do you claim wd'msgs' is bad practice in J?

The only reasoning I can find would imply that use of J is bad
practice, and I refuse to agree with that kind of thinking.

(More specifically, the criticisms of "doevents" which I find seem to
be aimed at using fine grained multi-threading and flow of control.
But that makes it sound using wd'msgs' would be *good practice* in the
context of J. Still, perhaps I have overlooked something?)

Thanks,

-- 
Raul


On Fri, Dec 16, 2016 at 8:12 PM, bill lam <[email protected]> wrote:
> wd'msgs' is the equivalent of doevents() in visual basic and dotnet
> winform. It is a bad practice and can cause unpredictable behaviors.
> Android does not support it. Try other alternatives first.
>
> That said, using it in Michael's context should be ok. Writing to file as
> suggested by Eric is a more general solution.
>
>
> On 17 Dec, 2016 6:07 am, "'Pascal Jasmin' via Programming" <
> [email protected]> wrote:
>
> a slightly different version of echo (that returns argument instead of i.0
> 0)
>
> pD =: (1!:2&2)`(wd bind 'msgs' ] 1!:2&2)@.IFQT
> echo =: (0 0 $1!:2&2)`(wd bind 'msgs' ] 0 0 $ 1!:2&2)@.IFQT
>
> works "universally"
>
> 3 : 'i =. 0 while. i < y do. if. 0 = 1000000 | i do. pD i end. i =. i+1
> end.' 10000000
>
>
> ----- Original Message -----
> From: Eric Iverson <[email protected]>
> To: Programming forum <[email protected]>
> Sent: Friday, December 16, 2016 4:40 PM
> Subject: Re: [Jprogramming] How can I echo characters to JQT terminal
> window each time through a loop?
>
> This is a perennial problem. Jconsole and JHS will show echo output before
> execution completes, but Jqt won't. There may be Jqt mechanisms, such as
> other windows, and special wd commands that would work. In my experience
> the best general solution to this problem is to have the loop where you
> currently have the echo, do an fwrite or fappend of status information to a
> file. Then, while the big update is running, a completely separate task can
> inspect the file contents. This is easy to do, works on all front ends,
> works on all platforms, and supports logging info that wouldn't easily fit
> into echo. In your case just replace the echos with an appropriate fwrite
> of formated data.
>
> On Fri, Dec 16, 2016 at 3:22 PM, Michael Berry <[email protected]> wrote:
>
>> I am looping through a large database table 1,000 rows at a time and I
>> would like to show some reassuring output.  I tried echo and smoutput (are
>> these different?) but both sat there until the whole explicit definition
>> ended and then printed out the progress notes all at once.  Do I need some
>> sort of flush output command?
>>
>> Here is the loop I tried:
>>
>> while. 0 = _1 -: d=. ddfch sh, 1000 NB. ddfet fails unpredictably so use
>> ddfch instead
>>
>> do.
>>
>> data=. make_cells d NB. put into ddfet format as expected by run_tests
>>
>> scores=. run_tests data
>>
>> r=. make_cols data,. <"1 scores
>>
>> assert. 0 = ch2 ddins~ ('select * from ',y,'_scored where 0=1');r
>>
>> echo written=. written + 1{. $data
>>
>> end.
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to