DMUG-Archiv 2005

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Antwort: Re: Expressions

Tja!

Erstmal vielen Dank. Aber einsichtig ist das alles nicht. In der Hilfe
steht With funktioniere ähnlich wie /.  .

Mit g = a + b x

bekomme ich mit g /. { a -> 2 ,b -> 3 }

brav

2 + 3 x  ,

mit With aber nicht.  Wo genau ist der Unterschied?

Grüße

Hans Dolhaine
_________________________________

VTR-TS
Phone:      +49-211-797-4809
Fax:        +49-211-798-1853
Mobile:     0171 97 17 049
E-Mail:     Hans.Dolhaine@XXXXXXX.com


                                                                                                                        
              
                      Thomas Hahn                                                                                       
              
                      <hahn@XXXXXXX.mpg.d         An:      Hans.Dolhaine@XXXXXXX.com                                    
                 
                      e>                        Kopie:   demug@XXXXXXX.ch                                               
          
                      Gesendet von:             Thema:   Re: Expressions                                                
              
                      owner-demug@mathe                                                                                 
              
                      matica.ch                                                                                         
              
                      20.10.2005 14:45                                                                                  
              
                      Bitte antworten                                                                                   
              
                      an Thomas Hahn                                                                                    
              
                      Entscheidung                                                                                      
              
                      erforderlich ?                                                                                    
              
                      |--------|                                                                                        
              
                      | [ ] ja |                                                                                        
              
                      |--------|                                                                                        
              
                                                                                                                        
              



> With[ { a = 2, b = 3 }, a + b x]
>
> wird
>
> 2 + 3 x   ausgegeben.
>
> Aber mit
>
> g = a + b x ;
> With[ { a = 2, b = 3 }, g]
>
> ist das Resultat
>
> a + b x
>
> was meiner Meinung nach zumindest nicht dem entspricht, was im Handbuch
> bzw. in der Hilfe beschrieben wird.  ist g keine expression? Warum werden
> hier die Größen a und b nicht ersetzt?

With funktioniert ganz ähnlich wie Ersetzungen in
Substitutionsregeln, nämlich, daß der Ersetzungsparameter
nicht als Variable "greifbar" ist (wenn das der richtige
Ausdruck ist), daher geht etwa

With[ {x = {}}, AppendTo[x, 1] ]

schief.

Im Gegensatz dazu definiert Block "echte" Variablen, daher
funktioniert

Block[ {x = {}}, AppendTo[x, 1] ]

ganz einwandfrei.  Module definiert ebenfalls "echte" lokale
Variable, aber da Module lexical scoping implementiert (wenn
auch nur als dynamical scoping mit umbenannten Variablen), haben
diese lokalen Variable keinen Einfluß auf zuvor definierte
Ausdrücke.

Analog werden die Substitutionen von With sofort eingesetzt,
d.h.

With[ {a = 2}, Print[HoldForm[a]] ]

gibt "2" zurück, während dasselbe Konstrukt mit Block "a"
hinschreibt.


Viele Grüße,

Thomas


Antworten:
Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html