MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Early out with Map?


Something like this might work.

list1 = {1, 2, 3, 3, 3}
list2 = {1, 2, 3, 4, 5}

Catch[Scan[If[# > 3, Throw[True]]&, list1]; False] --> False

Catch[Scan[If[# > 3, Throw[True]]&, list2]; False] --> True

--Mark.


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]





  • Prev by Date: RE: Early out with Map?
  • Next by Date: RE: Early out with Map?
  • Previous by thread: RE: Early out with Map?
  • Next by thread: RE: Early out with Map?