MathGroup Archive 1999

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

Search the Archive

Re: Caution with Block vs Module

  • To: mathgroup at smc.vnet.net
  • Subject: [mg16491] Re: Caution with Block vs Module
  • From: sb.nospam at stonetics.com (Stonewall Ballard)
  • Date: Tue, 16 Mar 1999 03:59:44 -0500
  • Organization: Stonetics, Inc.
  • References: <7cd485$o0s@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Greg,

You have to be careful any time you pass unevaluated variables into a
function. I don't think that Block is unique in causing problems with
that. Or even Mathematica. Lisp macros can suffer from this problem as
well.

  - Stoney

In article <7cd485$o0s at smc.vnet.net>, Arnold Gregory Civ AFRL/SNAT
<Gregory.Arnold at sn.wpafb.af.mil> wrote:

> Hello all:
> 
> I just "discovered" a nuance of Block which I did not anticipate so I
> thought I would share it with all of you.
> 
> I started using Block as the head of all my functions after reading the
> message a few weeks ago on Block vs. Module.  I thought I understood the
> differences, but the following example took me a long while to track down
> :(
> 
> test[eq_]:=Block[{x},x=eq; Return[1]];
> 
> test[c*x]
> 
> This gives a RecursionLimit.  This occurs because only the value of x is
> blocked.  Therefore test effectively says "x=c*x", which if you try it
> directly will also give you a RecursionLimit.  Based on this aspect of
> Block, I think Module is the most appropriate method (in general) to use for
> functions!
> 
> Greg

-- 
Stonewall Ballard                    Stonetics, Inc.
sb.nospam at stonetics.com    http://www.stonetics.com/


  • Prev by Date: Re: Help with MathLink and Fortran
  • Next by Date: Adding vector heads to ListPlotVectorField3D
  • Previous by thread: Re: Caution with Block vs Module
  • Next by thread: orthonormalization : it seems easy ... but.....