Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2000
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2000

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

Search the Archive

Re: With[{software=Mathematica}, Frustration]

  • To: mathgroup at smc.vnet.net
  • Subject: [mg24380] Re: [mg24308] With[{software=Mathematica}, Frustration]
  • From: Andrzej Kozlowski <andrzej at bekkoame.ne.jp>
  • Date: Wed, 12 Jul 2000 23:13:20 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

You are right of course. It was just a case of a sudden attack of stupidity
("With", of course, only superficially resembles Module, it does not
"rename" the local constants and, moreover, c in the example wasn't even a
local constant!).
This should teach me to think before sending my replies (I hope)!

on 7/10/00 11:41 AM, Leszek Sczaniecki at lsczan at home.com wrote:

> 
> 
> Andrzej Kozlowski wrote:
> 
>> on 00.7.7 1:11 PM, AES at siegman at stanford.edu wrote:
>> 
>>> Pages 359-360 of The Mathematica Book says (admittedly, taken a little
>>> out of context),
>>> 
>>> "You can think of  With  as a generalization of the /. operator. . ."
>>> 
>>> and
>>> 
>>> " With[{x=x0}, body]  works essentially like body /. x->x0 . . . "
>>> 
>>> Great, looks neat, let's try it for evaluating expressions without
>>> permanently setting the variables in them:
>>> 
>>> In[1]:= c = a b
>>> 
>>> Out[1]= a b
>>> 
>>> In[2]:= c
>>> 
>>> Out[2]= a b
>>> 
>>> In[10]:= c /. {a -> 2, b -> 3}
>>> 
>>> Out[10]= 6
>>> 
>>> In[3]:= With[{a = 2, b = 3}, c]
>>> 
>>> Out[3]= a b
>>> 
>>> *Not* what I was hoping for  . . .
>>> 
>> The point here is that With works like Module: it renames the variables (a
>> way of localizing their meaning). Thus the c outside With and the one inside
>> are quite different.
> 
> I am afraid that you are not quite right here. The true reason for the
> discussed
> behavior is, I believe, that Which has an attribute HoldAll.
> 
> Best regards,
> 
> --Leszek
> 
> 
>> What you  should have compared is
>> 
>> In[13]:=
>> a*b /. {a -> 2, b -> 3}
>> 
>> Out[13]=
>> 6
>> 
>> In[14]:=
>> With[{a = 2, b = 3}, a*b]
>> 
>> Out[14]=
>> 6
>> 
>> Unfortunately the way the Mathematica book is written it is not a very good
>> idea to just read fragments of it, unless you are already pretty familiar
>> with the basic principles of the programming language. You'd do better to
>> read  some introductory text on Mathematica programming first.
>> 
>> --
>> Andrzej Kozlowski
>> Toyama International University, JAPAN
>> 
>> For Mathematica related links and resources try:
>> <http://www.sstreams.com/Mathematica/>
> 



  • Prev by Date: Re: define a new object or use the existing?
  • Next by Date: Re: Division still cost more than multiplication?
  • Previous by thread: Re: With[{software=Mathematica}, Frustration]
  • Next by thread: Re: With[{software=Mathematica}, Frustration]