Documentation of Return is a little confusing?
- To: mathgroup at smc.vnet.net
- Subject: [mg113428] Documentation of Return is a little confusing?
- From: "Nasser M. Abbasi" <nma at 12000.org>
- Date: Thu, 28 Oct 2010 04:27:12 -0400 (EDT)
- Reply-to: nma at 12000.org
?Return says (under More information) "Return[expr] exits control structures within the definition of a function, and gives the value expr for the whole function." Notice, where it says "gives the value expr for the whole function", again, it says "__whole function__" ! Therefore, on writing the following function, and calling it using f[], what do you expect the result to be? ---------------- f[]:=Module[{i}, For[i=1,i<= 2,i++, { If[True,Return[True]]; } ]; False ] --------------------- On reading the help, one expects True to be resturned, right? but no: In[4]:= f[] Out[4]= False Not only is the above confusing enough, but removing the {} after For changes the behaviour ----------------- In[6]:= f[]:=Module[{i}, For[i=1,i<= 2,i++, If[True,Return[True]]; ]; False ] -------------------- Now, In[7]:= f[] Out[7]= True Ok, now before someone screams at me telling all the above can be easily explained by reading what it says under "possible issues": "Return exits only the innermost construct in which it is invoked" I do know this. And I do know that the above explains all. But my point is that the documentation of Return is conflicting with itself. In one place, it says "gives the value expr for the whole function" and in the other place it says "Return exits only the innermost construct in which it is invoked" The above 2 statments, at least for the casual user, can not mean the same thing? Or Am I not seeing something very deep here? --Nasser