Re: Early out with Map?
- To: mathgroup at smc.vnet.net
- Subject: [mg16053] Re: Early out with Map?
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Mon, 22 Feb 1999 01:44:32 -0500
- References: <7alrat$nvj@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Oscar Stiffelman wrote in message <7alrat$nvj at smc.vnet.net>... >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] > Oscar: MemberQ[{1,1,0,1,1}, _?(#==0&)] True MemberQ[{1,1,1,1,1}, _?(#==0&)] False We can check that the search is stopped immediately a 0 is found: MemberQ[{1,1,0,1,1}, _?(Print[z];#==0&)] z z z True Allan --------------------- Allan Hayes Mathematica Training and Consulting www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565