It was a later enhancement to forks, see this reference: https://code.jsoftware.com/wiki/Vocabulary/fork <https://code.jsoftware.com/wiki/Vocabulary/fork>
Basically it was felt that the strict 3 verb sequence (v1 v2 v3) called a fork (which is function composition) could be more useful if it allowed a leading noun as (n v2 v3). Rob > On 26 May 2020, at 6:36 pm, Anton Wallgren <[email protected]> wrote: > > Oh, cool! Why does this work? I would have assumed that I needed to write > (10”_ > ]) to achieve the constant function 10. > > Thanks, Anton Wallgren > On 26 May 2020, 10:27 +0200, 'Rob Hodgkinson' via Programming > <[email protected]>, wrote: >> Note that for the v function you don’t need to use @, but just a simple >> train of 3 verbs (100 > ]) … consider the 100 a constant function returning >> 100. >> >> (2&*)^:(10 > ])^:3 ] 1 >> 8 >> (2&*)^:(10 > ])^:5 ] 1 >> 16 >> >> >>> On 26 May 2020, at 6:02 pm, Anton Wallgren <[email protected]> wrote: >>> >>> Yes, maybe for loop is the way to go. It just seems very un-J :). I did try >>> f^:v^:n earlier, but it didn’t work, it ran f 2*n times. But when I try it >>> now with my simple example, >>> >>> (2&*)^:(10&> @ ])^:3 ] 1 >>> >>> returns 8, and >>> >>> (2&*)^:(10&> @ ])^:5 ] 1 >>> >>> returns 16, as expected. Maybe there is something going on with my “v” in >>> my earlier code. >>> >>> Thanks, Anton Wallgren >>> On 26 May 2020, 09:11 +0200, Raul Miller <[email protected]>, wrote: >>>> ^:_ doesn't impose the max limit on iterations, though... >>>> >>>> I think, for something that quirky, I'd just use a for loop. That >>>> said, f^:v^:n would work -- I'm just not sure it's optimized >>>> adequately. >>>> >>>> I hope this helps, >>>> >>>> -- >>>> Raul >>>> >>>> On Tue, May 26, 2020 at 2:39 AM 'Rob Hodgkinson' via Programming >>>> <[email protected]> wrote: >>>>> >>>>> Hi Anton, welcome to J. >>>>> >>>>> This is a further parameter to the power operator (^:) described here: >>>>> >>>>> https://code.jsoftware.com/wiki/Vocabulary/Loopless >>>>> <https://code.jsoftware.com/wiki/Vocabulary/Loopless> Section “Types of >>>>> Loops” and the row in the table “Apply a verb repeatedly”, “Until a >>>>> condition is met”. >>>>> Use Power ([x] u^:v^:_ y) >>>>> >>>>> For your example, double while a condition (eg let’s say while the >>>>> sequence is < 100 and stop with the value that breaches that condition …) >>>>> >>>>> 2&* ^:(100>])^:_ (1) NB. Sequence here is 1,2,4,8,16,32,64,128 >>>>> 128 >>>>> >>>>> 2&* ^:(100>])^:_ (5) NB. Sequence is 5, 10, 20, 40, 80, 160 >>>>> 160 >>>>> >>>>> Best, Rob >>>>> >>>>>> On 26 May 2020, at 4:09 pm, Anton Wallgren <[email protected]> wrote: >>>>>> >>>>>> Hello! >>>>>> >>>>>> Fairly recent J enthusiast here. I’m wondering about the idiomatic way >>>>>> to iterate at most n times? I.e. do f^:n y, but with the possibility of >>>>>> an early exit if some condition is met. Is it (u F. ]) y, where u is f >>>>>> but with some Z:’s added? E.g >>>>>> >>>>>> f=: 2&* >>>>>> MAX=: n >>>>>> >>>>>> u=: monad define >>>>>> _2 Z: -.*MAX=: MAX - 1 >>>>>> _2 Z: some other condition >>>>>> f y >>>>>> ) >>>>>> >>>>>> But then you need to globally assign and reassign MAX and this doesn’t >>>>>> feel very elegant. Another option of course is to use a for-loop with >>>>>> break. >>>>>> >>>>>> Thanks, Anton Wallgren >>>>>> ---------------------------------------------------------------------- >>>>>> 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 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
