Re: Early out with Map?
- To: mathgroup at smc.vnet.net
- Subject: [mg16127] Re: [mg16036] Early out with Map?
- From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
- Date: Sat, 27 Feb 1999 03:23:01 -0500
- Sender: owner-wri-mathgroup at wolfram.com
On Sat, Feb 20, 1999, Oscar Stiffelman <ostiffel at leland.stanford.edu> 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] > > > > Scan will do exactly what you want, If I have understood you correctly. The way to use it is Scan[If[testChild[#],Return[True],False]&,children] You will get True the first time Scan finds an element of children for which testChild is True. Andrzej Kozlowski Toyama International University JAPAN http://sigma.tuins.ac.jp/ http://eri2.tuins.ac.jp/ Andrzej Kozlowski Toyama International University JAPAN http://sigma.tuins.ac.jp/ http://eri2.tuins.ac.jp/