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

Reply via email to