Re: "short circuiting" And and Or
- To: mathgroup at smc.vnet.net
- Subject: [mg70607] Re: [mg70582] "short circuiting" And and Or
- From: Sseziwa Mukasa <mukasa at jeol.com>
- Date: Sat, 21 Oct 2006 05:13:47 -0400 (EDT)
- References: <200610200921.FAA11062@smc.vnet.net>
On Oct 20, 2006, at 5:21 AM, Szabolcs Horvat wrote:
> I'd like to write a function that tests whether there are any elements
> in a list that violate a certain condition. I could simply use
> And@@condition/@list, but for reasons of efficiency I'd like to stop
> the testing as soon as a "False" value is found. Is there any elegant
> way of doing this without writing an explicit While loop?
Elegance is in the eye of the beholder but
NestWhile[Block[{l =
Rest[#]}, If[l == {}, l, Prepend[Rest[l],
And[First[#], condition[First[
l]]]]]] &, Prepend[list, True], # != {} && First[#] &]
gives the desired result. It returns a list containing the first
element which for which condition is false followed by the rest of
the original list.
Regards,
Ssezi
- References:
- "short circuiting" And and Or
- From: "Szabolcs Horvat" <szhorvat@gmail.com>
- "short circuiting" And and Or