Date: Feb 2, 2013 1:15 AM
Author: Daniel Huber
Subject: Dynamic scoping

Block is supposed to be a dynamic scoping construct. Therefore, in the following, "Print" should be an undefined function. But consider:

Block[{Plus},
t = ToString[Plus[1, 2]];
Print[t];
]

The output of this is: "3" and not "Plus[1,2]" as it would be if "Print" has no defined meaning.
cheers, Daniel