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