Hi Jens,
In jeder "normalen" Progsprache benennt man die lokalen Paramter
schlicht und einfach anders als eine eventuelle spezielle globale
Variable auf die man zugreifen will und vermeidet ganz einfach die
Mehrdeutigkeit.
Ich bestreite ja generell nicht den allgemeinen Nutzen beider Konstrukte
Block[] und Module[], habe aber im Falle der Rule[] meine zweifel ob MMA
hier wirklich "schlau" und korrekt agiert.
l.g. Robert
Jens-Peer Kuska schrieb:
schiesslich stand im Original Module[{x, y}, {a, b} /. {x_, y_} -> {y,
x}]
ist also das umbenannte "x" aus dem Module[] gemeint also
Block[{x$1,y$2}, {a,b} /. {x$1_,y$1_}-> {y$2,x$1}]
oder aber das Globale x
Block[{x$1,y$2}, {a,b} /. {x$1_,y$1_}-> {y,x}]
Die sind beide gleich gut und um die Mehrdeutigkeit aufzuloesen hat man
Block[{x$1,y$2}, {a,b} /. {x$1_,y$1_}-> {y,x}]
genommen. Da gibt es nix zu erklaeren, das ist so (!), genauso wir
Sqrt[4] eine 2 ergibt und keine -2.
--
Robert Nowak
IMS Nanofabrication AG
Phone: +43/12144894/32
Fax: +43/12144894/99