Read http://www.jsoftware.com/help/dictionary/d202v.htm
(trigger */@:-.@e.~ ]) checks whether your (intermediate) output is unequal to both outp1 and outp2, if not, it delivers 0 and verb stops, giving that last output. R.E. Boss -----Oorspronkelijk bericht----- Van: programming-boun...@jsoftware.com [mailto:programming-boun...@jsoftware.com] Namens David Vaughan Verzonden: zaterdag 8 oktober 2011 18:20 Aan: Programming forum Onderwerp: Re: [Jprogramming] Repeated application of a verb Could you maybe explain how that tacit verb works (and how it works with 'verb')? Is it something along the lines of, see if the input is not a member of trigger, multiply with trigger to get 0 0 or outp1 outp2, ... then I run out of ideas. :P On 8 Oct 2011, at 15:58, R.E. Boss wrote: > trigger=: outp1, outp2 > > verb ^: (trigger */@:-.@e.~ ])^:_ input > > > R.E. Boss > > > -----Oorspronkelijk bericht----- > Van: programming-boun...@jsoftware.com > [mailto:programming-boun...@jsoftware.com] Namens David Vaughan > Verzonden: zaterdag 8 oktober 2011 16:47 > Aan: Programming forum > Onderwerp: Re: [Jprogramming] Repeated application of a verb > > Well, the idea is to repeatedly perform the verb on its own output until one > of two outputs occur, at which point the verb should stop being performed. > Also, I need to have some way of knowing which of the two outputs were > achieved. The result of the verb on each application will a positive > integer. Does this sound like ^: would be of use? If so then how should it > be applied? If not, then what would be the best approach? > Thanks. > > > > On 8 Oct 2011, at 13:04, Raul Miller wrote: > >> On Sat, Oct 8, 2011 at 6:23 AM, David Vaughan >> <purpleblue...@googlemail.com> wrote: >>> Hi, I am looking to repeatedly apply a verb on itself until a >>> certain value is reached, with the prior knowledge that there are >>> two values that can be reached. The idea is to count how many times >>> one of the two values comes up. I know about the power verb but I'm >>> not sure how to use it properly beyond the simple v^:n y form. I've >>> read about using it like a C while loop but in my case, there are >>> two values I want to 'exit the loop' with. >>> >>> Any pointers? Thanks. >> >> Depending on what specifically you are trying to do, ^: may or may not >> be the right thing to use. >> >> The issue is that ^: assumes that it is dealing with a mathematical >> function. If its function gives the same result twice in a row, it >> will stop right there. >> >> This is how ^:(test)^:_ works something like a while loop -- when >> (test) returns false, the inner ^: becomes an identity function and >> the outer ^: knows that it's time to stop. >> >> That said, note that ^: functions -- like pretty much everything else >> in J -- can take list arguments and produce list results. >> >> -- >> Raul >> ---------------------------------------------------------------------- >> 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