MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: A riddle: Functions that return unevaluated when they cannot

  • To: mathgroup at smc.vnet.net
  • Subject: [mg82484] Re: A riddle: Functions that return unevaluated when they cannot
  • From: Albert <awnl at arcor.net>
  • Date: Mon, 22 Oct 2007 05:34:35 -0400 (EDT)
  • References: <ff9sin$5vc$1@smc.vnet.net> <ffckoe$sop$1@smc.vnet.net> <ffed3p$bg7$1@smc.vnet.net>

Hi,

Is this what you are looking for?

In[27]:= ClearAll[g]

In[28]:= g[x_]:=Module[{res=x+2},
res/;res<10
]

In[29]:= g[15]
Out[29]= g[15]

In[30]:= g[1]
Out[30]= 3

That is, using a conditional on your last expression decides whether or 
not a return value is returned or the input expression is returned 
unevaluated. This could of course be a flag which tells whether your 
calculation succeeded or not.

I can't remember where I found this trick, I don't know whether it is 
documented and how/why it works. But I think it is used in the code of 
some of the Standard Packages (and probably in the functions you 
mentioned as well) so should work reliable, but I have no guarantees for 
that...

hth,

albert


  • Prev by Date: Re: Can Integrate[expr,{x,a,b}] give an incorrect result?
  • Next by Date: How to create an animation of a rotating rectangle?
  • Previous by thread: Re: A riddle: Functions that return unevaluated when they cannot
  • Next by thread: Re: A riddle: Functions that return unevaluated when they cannot