Where does Return return to?

*To*: mathgroup at smc.vnet.net*Subject*: [mg48601] Where does Return return to?*From*: koopman at sfu.ca (Ray Koopman)*Date*: Mon, 7 Jun 2004 05:33:29 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Consider the following three functions, which I thought would be equivalent. func1[n_] := Block[{L = n, otherstuff}, While[L > 1, Which[cond1, expr1, cond2, Return[expr2], True, expr3]; L--]; expr4] func2[n_] := Block[{L = n, otherstuff}, While[Which[cond1, expr1, cond2, Return[expr2], True, expr3]; --L > 1]; expr4] func3[n_] := Block[{otherstuff}, Do[Which[cond1, expr1, cond2, Return[expr2], True, expr3], {L,n,2,-1}]; expr4] func1 returns expr2 or expr4, as desired, but both func2 and func3 always return expr4. In each function, nothing changes if I replace the Which by If[cond1, expr1, If[cond2, Return[expr2], expr3]]. Yes, I know I could use Throw/Catch here, but on my system that's slower, and it would still leave me wondering what the rule is for where Return returns to.

**Follow-Ups**:**Re: Where does Return return to?***From:*DrBob <drbob@bigfoot.com>