Jan-Pieter,

Thank you for the solution.  I’m a huge tacit fan (or maybe the word is 
“dilettante”) when writing J…less so when reading it a week later :-).  In this 
particular case the tacit solution wins on elegance and (at least at the 
moment) seems perfectly clear.

Thanks again.

Ed

Sent from my iPad

> On Oct 21, 2022, at 1:55 PM, Jan-Pieter Jacobs <janpieter.jac...@gmail.com> 
> wrote:
> 
> I don't know whether you'r only looking for a tacit function, but this
> would also likely work if fold is unavailable for you (untested):
> 
> {{ for_val. y do. if. f val do. val_index{y return. end. end.}} coords
> 
> Jan-Pieter
> 
>> On Fri, 21 Oct 2022, 19:51 Ed Gottsman, <edward.j.gotts...@gmail.com> wrote:
>> 
>> Pascal,
>> 
>> Your original solution is perfect for me—I don’t happen to need the
>> index.  And there may in fact be no items with f = 1.
>> 
>> Very clever: it gets a place of honor in the flashcard deck :-).
>> 
>> Many thanks.
>> 
>> Ed
>> 
>> Sent from my iPad
>> 
>>> On Oct 21, 2022, at 12:46 PM, 'Pascal Jasmin' via Programming <
>> programm...@jsoftware.com> wrote:
>>> 
>>> if you want the index rather than the coordinate values, then
>>> 
>>> (1 i.~ f) y
>>> 
>>> will "short circuit" to the first 1
>>> 
>>> and
>>> 
>>> ({~ 1 i.~ f)
>>> 
>>> may be faster to get first coordinates than my original solution, though
>> errors if there are no items with 1 = f
>>> 
>>> 
>>> 
>>> 
>>> On Friday, October 21, 2022 at 12:55:41 p.m. EDT, 'Pascal Jasmin' via
>> Programming <programm...@jsoftware.com> wrote:
>>> 
>>> 
>>> 
>>> 
>>> 
>>> }.^:(0 = f@{.)^:_
>>> 
>>> will return the list with the head being the first f not equal 0.
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On Friday, October 21, 2022 at 12:19:41 p.m. EDT, Ed Gottsman <
>> edward.j.gotts...@gmail.com> wrote:
>>> 
>>> 
>>> 
>>> 
>>> 
>>> Hi.  I’m blanking on something basic and research isn’t helping.  When
>> the blindingly obvious solution is revealed I will blame a combination of
>> sleep deprivation and senescence.
>>> 
>>> I’ve got a long list of coordinates ordered by desirability.  I want to
>> invoke f (a custom script) with each coordinate in turn.  f may return 0
>> (failure), in which case I want to invoke it again with the next
>> coordinate.  When f (eventually) returns 1, I want to terminate—the
>> remainder of the coordinates should not be processed.  (Note that the very
>> first invocation of f may return 1.)
>>> 
>>> This *almost* feels like ^: in its Do While form.  Almost.  It also
>> feels like SCs around list operations (though they seem to be limited to
>> primitives).
>>> 
>>> Help.
>>> 
>>> Many thanks.
>>> 
>>> Ed
>>> 
>>> Sent from my iPad
>>> ----------------------------------------------------------------------
>>> 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