[Date Index] [Thread Index] [Author Index]
Re: Early out with Map?
Oscar, Why don't you use the function Position? For example, Position[children, a_ /; testChild[a], 1, 1] will return either the position of the first element of children which satisfies testChild, or else it will return an empty list if no elements of children satisfy the test. Turning this into a True False statement isn't difficult. Carl Woll Dept of Physics U of Washington Oscar Stiffelman wrote: > Hi, > > Is it possible to interrupt Map before it reaches then end of the list? > > For example, how would I convert the following from procedural to > functional? > > (* This is the procedural version *) > foundSolution = False; > For[i =1, i <= numChildren && ! foundSolution, i++, > If[testChild[children[[i]]], > foundSolution = True; > ]; > ]; > foundSolution > > (* > * This keeps going until it reaches the end of the list. > * I would prefer to return as soon as testChild returns True > *) > Or @@ Map[testChild, children] > > (* > * This does not actually return > *) > Map[If[testChild[#], Return[True], False]&, children]