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